由于工作中经常需要写脚本,shell这东西,这是记不住,所以把常用到的命令记下来,省的重新找,——————-不定时更新—————-
- 获取某个进程ID
ret=ps | grep cmd.sh | awk 'NR==1{print}'| awk '{print $1}'
- 杀死app进程,并在此后台启动
kill -9 $(ps -A|awk '/app/{print $1}');./app&
- 批量替换文件名
ls *43112143800305* | awk '{org=$0;gsub("43112143800305", "34052243800005");system("mv "org" "$1)}'
- 批量修改文件名
#!/bin/sh
for files in $(ls *.jpg)
do mv $files "pic"$files
done
- shell常用
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
- 获取当前进程父进程pid 名字
PID=`cat /proc/$$/stat | awk '{print int($4)}'`
PNM=`ps -ef | grep " $PID root" | grep -v grep`
- 抓包,使用wireshark分析
tcpdump -i ppp0 -s 4096 -w /dir/filename.pcap
tcpdump -i ppp1 -s 4096 -w /dir/filename.pcap
- 获取字符串等号后面的值
fsuid='FSUID=12345'
fsuid=${fsuid#*=}
- awk获取字符串最后一列
awk '{print $NF}'
- sed文本倒序输出
sed '1!G;h;$!d' filename.log
- -