CentOS7常用命令
作者QQ:67065435 QQ群:821635552
本站内容全部为作者原创,转载请注明出处!
用户管理
- 添加用户并创建密码
# 添加用户 useradd -mk /home/www -s /bin/bash www # 创建密码 sudo passwd www 密码: www 重复密码: www # 删除用户 sudo userdel www
远程连接
- ssh登录服务器
# 修改私钥权限 chmod -R 600 [私钥] ssh -p [端口] -i [私钥] [账号]@[IP] password:********
远程拷贝
- scp拷贝文件到远程服务器
# 修改私钥权限 chmod -R 600 [私钥] # 本地拷到远程 scp -P [端口] -i [私钥] -r [本地路径] [账号]@[IP]:[远程路径] # 远程拷到本地 scp -P [端口] -i [私钥] -r [账号]@[IP]:[远程路径] [本地路径] password:********
Shell切换
不同Shell之间切换
# 切换到默认Shell chsh -s /bin/bash # 切换到oh my zsh chsh -s /bin/zsh
连接管理
服务器指定进程占用的端口
netstat -nap|grep [进程名]
服务器TIME_WAIT和CLOSE_WAIT
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
显示指定状态的连接列表
netstat -lntap | grep LISTEN netstat -lntap | grep TIME_WAIT netstat -lntap | grep CLOSE_WAIT netstat -lntap | grep ESTABLISHED
进程管理
pstree
# 进程树查看 yum install psmisc -y # 查看所有进程 pstree -a # 只查看主进程 pstree
systemctl
systemctl status|grep service
后台运行程序
# 无输出类型命令 `命令` & # 有输出类型命令 nohup `命令` &
计划任务
查看计划任务
crontab -l
添加计划任务
(实际上就是在vi模式下编辑计划任务文件) crontab -e
计划任务特殊符号
*:用来表示所有可能的值,如月份month处用*,表示每个月执行指定任务 ,:用来指定一个列表范围,如月份month处用1,4,7,10,表示在这4个月里执行指定任务 -:用来指定一个区间范围,如月份month处用1-10,表示在1-10月里执行指定任务 /:用来指定一个间隔频率,如月份month处用1-12/2或*/2,表示每两个月执行指定任务
计划任务取值范围
分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7)【0和7为周日】
计划任务详细图解
ICMP管理(管理ping)
开启ICMP响应(允许ping)
vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=0 ESC :wq sysctl -p
关闭ICMP响应(关闭ping)
vim /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 ESC :wq sysctl -p
文件管理
把指定字符串替换为其它字符串
# 替换单个文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g [文件路径] sed -i s/"查找字符串"/"替换字符串"/g /www/test.txt # 替换正则路径文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g [正则路径] sed -i s/"查找字符串"/"替换字符串"/g /www/[a-zA-Z0-9]{1-5}.txt # 先通过grep查找含有指定字符串的文件,再替换文件中的字符串 sed -i s/"查找字符串"/"替换字符串"/g `grep -rl "查找字符串" ./`
动态查看指定文件
tail -f /logs/prod.log
清空指定文件
echo "" > /logs/prod.log
创建文件连接
# 软连接 ln -s [文件、目录路径] [软连接路径] # 硬连接 ln [文件、目录路径] [硬连接路径]
打包和解包
# 解包 tar -zxvf xxx.tar.gz # 打包 tar -zcvf xxx.tar.gz ./xxx/ # 校验 tar -tf xxx.tar.gz
目录下文件被批量改成了0777,怎么恢复
# 文件批量改为0644 find . -type f -exec chmod 644 {} + # 目录批量改为0755 find . -type d -exec chmod 755 {} + # 可执行文件批量改为0755 find . -type f -name *.sh -exec chmod 755 {} +
修改文件最后编辑时间
# 修改xxx.sh最后编辑时间为2012-12-31 12:00:00 touch -d "2012-12-31 12:00:00" xxx.sh # 修改所有文件最后编辑时间为2012-12-31 12:00:00 find . -type f -exec touch -d "2012-12-31 12:00:00" {} + # 修改所有文件夹最后编辑时间为2012-12-31 12:00:00 find . -type d -exec touch -d "2012-12-31 12:00:00" {} +
查找当前目录大于、小于、等于1000kb的文件
find . -size +1000k find . -size -1000k find . -size 1000k
删除符合指定规则的文件或目录
[文件或目录查找命令] -exec [查到的文件或目录被执行该操作] {} + # 例如 # 将当前路径下的所有文件权限改为644 find . -type f -exec chmod 644 {} + # 将当前路径下的所有目录权限改为755 find . -type d -exec chmod 755 {} + # find -type [type参数]: f //文件 d //目录 l //链接 p //管道 b //块设备 c //字符设备 s //套接字socket
查找路径下包含指定字符串的文件
grep -rn "[字符串]" [路径] grep -rn "test_str" * -An 目标结果前n行 ep: grep -A1 -rn "test_str" * -Bn 目标结果后n行 ep: grep -B1 -rn "test_str" * -Cn 目标结果前后n行 ep: grep -C1 -rn "test_str" * -i 忽略大小写 ep: grep -i -rn "test_str" * # grep相似的命令还有: awk sed
记录了多条IP的文件ip.txt,出现次数最多的前3个IP及次数
cat ip.txt|uniq -c|sort -rn|head -n 3
找出一个文件属于哪个软件包
# 以/etc/my.cnf为例 rpm -qf /etc/my.cnf
CPU内核数
- CPU内核数查看
echo $(nproc)
CPU状态查看
命令格式
top
执行结果
# 统计信息:前五行是系统整体的统计信息 # 进程信息:统计信息下方显示的是各个进程的详细信息,5秒刷新一次
内存状态查看
命令格式
free [参数]
命令参数
-b 区块为1 byte(单位B) -k 区块为1024 byte(单位KB) -m 区块为1024*1024 byte(单位MB) -g 区块为1024*1024*1024 byte(单位GB) -t 显示内存总和列 -o 不显示缓冲区调节列 -s [两次取内存数据之间隔的秒数] -V 显示版本信息
硬盘状态查看
命令格式
df [参数] [文件]
命令参数
# 必要参数 -k 区块为1024 byte(单位KB) -m 区块为 1024*1024 byte(单位MB) -h 区块为 1024*1024*1024 byte(单位GB) -H 区块为 1000*1000*1000 byte(单位GB) -l 只显示本地文件系统 -a 全部文件系统 -i 显示inode信息 --sync 先执行sync命令 --no-sync 不执行sync命令 -P 输出格式为POSIX -T 文件系统类型 # 可选参数 --block-size=[区块大小] 指定区块大小 -t [文件系统类型] 只显示选定文件系统的磁盘信息 -x [文件系统类型] 不显示选定文件系统的磁盘信息 --help 显示帮助信息 --version 显示版本信息