按需更新。
一些命令整理:
查看linux系统:cat /etc/*release*
查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR|grep "^-"|wc -l
解决 mv无法移动大量文件,报错mv: Argument list too long
用这个命令:find 原目录/ -name "*.png" -exec mv {} 目标目录/ \;
1.文件内容包含指定字符串
find . | xargs grep string #查找当前目录下文件内容包含字符串string的文件
为什么要这样写,因为管道命令符是把上一部的结果传递给下一步来处理,在 find . | grep string中虽然看似和find . | xargs grep string差不多,但是实际上还是有区别的。应为find .得到的结果是一串文件名集合,如果直接传递给grep的话,grep会把这些文件名看作一些无意义的字符串来处理。但是传递给xargs,他会把他当作一个有意义的文件来处理。
2.文件名包含指定字符串
find . -name '*string*' #查找当前目录下文件名包含字符串string的文件
如果要查找文件名中不包含字符串string的文件,可以使用!(取非,也就是取反)。
find . ! -name '*string*'
3.根据进程名查看端口
netstat -nlpt | grep 进程名
4.生成md5
openssl dgst -md5 文件名
5. 查看目录下所占空间
比如查看/var 目录下,所有子目录所占空间,cd /var;du -sh *
6. grep -v:显示不包含匹配文本的所有行。反向查找
7. 根据进程ID查询进程完整路径
1)ps -ef|grep 进程名
拿到进程ID
ps aux | grep 进程ID 根据进程ID查询对应的进程
2) ls -lrt /proc/进程ID 确定进程所在的目录
例如:
8. linux查看是物理机器还是虚拟机器
cat /proc/scsi/scsi
很容易区别是不是虚拟机
9. 停止脚本
10. du-查看文件夹大小-并按大小进行排序
du -s * | sort -nr
du -s * | sort -nr | head 选出排在前面的10个,
du -s * | sort -nr | tail 选出排在后面的10个。
筛选出大小为MB和GB级别的目录和文件,并降序排序
11.查看cpu和内存配置
物理CPU个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
每个CPU物理核数: cat /proc/cpuinfo | grep "cpu cores" | uniq | wc -l
每个CPU逻辑核数: cat /proc/cpuinfo | grep "processor" | uniq | wc -l
查看CPU频率: cat /proc/cpuinfo | grep MHz
按M,按G,按K查看内存大小:free -m, free -g, free -k
查看系统版本:
cat /proc/version
cat /etc/redhat-release
cat /etc/*release*
12.linux删除文件没有释放空间
例如删除了 /tmp 目录下的文件,但是空间没有释放,
首先执行 lsof | grep delete | grep /tmp
查出进程后kill掉,就可以释放空间
原因:使用rm 删除的文件原理:rm命令只是把链接解除(unlink),假设文件是被打开的(有一个进程正在使用),进程仍然可以读取已删除的文件,所以并不释放磁盘空间。
13.根据进程名杀死进程
ps -ef | grep 进程名 | grep -v grep | awk '{print $2}' | xargs kill
14.统计文件中字符串数量
grep -o '字符串' file |wc -l
shell笔记
1. echo “${array[@]}”获取所有数组元素的值
${#array[@]} 数组元素个数
2. 命令格式1:sed 's/原字符串/新字符串/' 文件
命令格式2:sed 's/原字符串/新字符串/g' 文件
这两种命令格式的区别在于是否有个“g”。没有“g”表示只替换第一个匹配到的字符串,有“g”表示替换所有能匹配到的字符串,“g”可以认为是“global”(全局的)的缩写
sed -r 支持正则表达式
3. curl只返回http状态码
命令:curl -sL -w "%{http_code}" "此处填写url" -o /dev/null
例如:curl -sL -w "%{http_code}" "www.baidu.com" -o /dev/null
4. 监控端口
while [[ true ]]; do
netstat -ano | grep $SERVICE_PORT | grep 'LISTEN' 2>&1 > /dev/null
status=$?
#echo 'status:'${status}
if [[ $status != "0" ]]; then
echo "warning port not exist "
fi
sleep ${MONITOR_FREQUENCY}
done
5. 监控进程
while [[ true ]]; do
ps -fe|grep $supervise_process |grep -v grep
if [ $? -ne 0 ]
then
echo "warning process not exist "
fi
sleep ${MONITOR_FREQUENCY}
done
6. 根据shell脚本执行结果判断
while [[ true ]]; do
sh check-service.sh | grep "Service OK!" 2>&1 > /dev/null
status=$?
if [ $status -ne 0 ]; then
echo "warning!!! upload monitor!"
fi
sleep ${MONITOR_FREQUENCY}
done