1 Linux
1.1 常用命令
1.1.1 用户和用户组管理
su 用户名 #切换到用户
useradd 用户名 #添加用户
passwd 密码 #设置密码
usermod 用户名 #修改用户名
userdel -rf 用户名 #强制删除用户和相关的所有文件
groupadd 用户组 #新增用户组
groupmod 用户组 #修改用户组
groupdel 用户组 #删除用户组
groups 用户名 #查询用户所属组
gpasswd -a 用户名 用户组 #将用户添加到组
grep '用户组' /etc/group #查看用户组下所有用户
1.1.2 系统管理
sudo 指令 #以root的身份执行指令
top #实时显示进程信息
ps #显示当前进程信息
kill -9 pid #强制杀死进程
shudown #关机
reboot #重启
who -H #显示当前登录系统的用户和标题信息
timedatectl status #显示系统当前时间
timedatectl set-ntp true #同步系统时间到NTP服务器
1.1.3 文件管理
ls -al #列出所有文件,包含隐藏和详细信息
pwd #显示当前目录
cd #切换到home目录,相当于cd /root或者cd /home/当前用户名
cd .. #切换到上级目录
cd /usr/share/doc #切换到绝对目录
cd ./temp #切换到相对目录
mkdir -p aaa/bbb #创建多级目录
rmdir -p aaa/bbb #删除多级空目录
cp –r aaa/* ccc #复制aaa下的全部文件和目录到ccc,不加-r会略过目录
mv 原文件/目录名 新文件/目录名 #重命名/移动
rm -rf 文件/目录名 #强制删除目录或文件
1.1.4 文件权限管理
输入ls -l后,每个文件的属性由左边第一部分的10个字符来确定
第0位确定文件类型:
- 当为[ d ]则是目录
- 当为[ - ]则是文件
- 若是[ l ]则表示为链接文档(link file)
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
第1-3位确定属主(该文件的所有者)拥有该文件的权限
第4-6位确定属组(所有者的同组用户)拥有该文件的权限
第7-9位确定其他用户拥有该文件的权限
r代表可读(read), w代表可写(write),x代表可执行(execute),-代表没有权限
chgrp 属组 文件 #更改文件的属组
chown 属主:属组 文件 #更改文件的属主(属组也可以)
chmod -R 770 文件 #递归设置文件权限[r]4 [w]2 [x]1 [-]0
chmod -R u=rwx,g=rx,o=r 文件 #递归设置文件权限user group others,此外a代表all
1.1.5 文件查看
touch 文件名 #创建新文件,touch test_{1..10}.txt批量创建
stat 文件名 #查看文件信息
vim 文件名 #打开文件进入命令模式,按i进入编辑模式,再按Esc回到命令模式,按:wq强制保存退出,vim test.txt +6可以直接定位到第6行
cat -n 文件名 #查看小文件内容,-n表示加入行号
less 文件名 #查看大文件内容
head 文件名 #查看文件的前一部分
tail -3f 文件名 #动态查看文件最后3行,tail -nf log.txt看日志
grep -n 关键字 文件名 #根据关键字搜索行,ps -ef | grep -c sshd查找指定进程个数
echo 字符串 #将字符串输出到控制台,> 文件名表示覆盖,>> 文件名表示追加
ln -s 目标文件绝对路径 快捷方式路径 #给目标文件增加一个软链接
find 指定目录 指定条件 指定内容 #find . -name "*.gz"查找当前目录名字为*.gz
1.1.6 文件压缩
gzip 文件名 #压缩文件,扩展名为.gz
gzip -d 文件名 #解压文件,或者使用gunzip
zip 文件名 #压缩文件,扩展名为.zip
unzip 文件名 #解压文件
1.1.7 网络与磁盘管理
ifconfig #显示激活的网卡信息
ifconfig ens37 down/up #关闭/开启网卡
ifconfig ens37 192.168.23.133 netmask 255.255.255.0 #配置ip地址和子网掩码
ping www.baidu.com #检测是否与主机连通
netstat #显示网络状态
lsblk #列出所有块设备
df -h #换算后显示磁盘使用情况
mount auto /dev/cdrom 文件名 #挂载CD/DVD到文件
1.1.8 软件安装
yum install 软件名 #安装软件
yum update 软件名
yum remove 软件名
yum clean all #清除缓存目录下的软件包及旧的headers
1.2 Shell
#!/bin/bash
:<<!
这是多行注释,上面指定脚本解释器
!
number=10 #定义变量
String="abc" #定义字符串变量
date=$(date) #定义命令变量
readonly myUrl=10 #定义只读变量
echo "${number}" #标准的使用变量的方式,简略echo ${number}
unset variable_name #删除变量
arr=(1 2 3 4 5) #定义数组
arr[0]=1 #给数组赋值
${arr[0]} #获取元素
${#arr[*]} #获取长度
expr $a + $b #算术运算符
((a++)) #自增/减运算符
[ $a = $b ] #字符串运算符
[ $a -ep $b ] #关系运算符
[ $a -lt 20 -o $b -gt 100] #布尔运算符or
[[ true && true ]] #逻辑运算符&&
$? #获取上一条语句的执行结果
#if语句,查找一个进程,如果存在,打印true,不存在打印false
if [$(ps -ef | grep -c "ssh") -gt 1 ]
then
echo "true"
else
echo "false"
fi
#case选择语句
v = "czbk"
case v in
"czbk")
echo "传智播客"
;;
"baidu")
echo "百度"
;;
esac
#for循环语句
for loop in A B C
do
echo $loop
done
#while循环语句
a=1
while[ "${a}" -le 10 ]
do
echo "${a}"
((a++))
done
#函数
function(){
echo "接收到参数$1和$2"
return $(($1 + $2))
}
function 10 20
echo $?
1.3 Linux安装JDK1.8
yum install -y java-1.8.0-openjdk-devel.x86_64
vim /etc/profile
JAVA_HOME=/home/java/jdk1.8.0_131
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH
source /etc/profile
1.4 实战
netstat -netlp | grep 端口号 #查看占用端口的进程id
ps -ef | grep 进程名 #根据进程名查询进程详细信息