Shell在工作中用的非常之多,做一个shell杂项的记录,当做个人的备忘笔记吧。
ps -ef
ps各个选项的含义:-e 显示所有进程,-f全格式,-w宽输出,-a显示终端所有进程,包括其他用户的进程。-u以用户为主的格式显示程序状态,-x显示所有程序,不以终端机器来进行区分。
ps -ef各列的含义:
1.User ID 2.PID 3.PPID父进程ID 4.CPU占用率 5.STIME开始的时间 6.TTY 开始此进程的TTY 7.TIME总时间 8.命令名。
ps -ef杀掉grep的进程
有的时候我们希望能够一次杀掉grep出的多个进程,例如写了一个脚本nohup并发启动多个进程(顺带说一句在for循环的循环体末尾直接加&即可并发执行,但是容易爆内存,可以分批次并发),又突然终端断开连接的情况下,此时重连后不能直接ctrl+c关闭之前的脚本了,此时可以用到如下命令。
ps -efw|grep -w 'beringei'|grep -v grep|cut -c 9-15|xargs kill-9
Shell查看文件的行数和列数
查看行数
wc -l <filename>
以空格为分割符查看列数
head -1 <filename> | awk -F ' ' '{print NF}'
删除文件中的前n列
awk '{for(i=n+1;i<NF;i++)printf("%s ",$i);print $NF}' filename >newfile
shell做简单的运算
sum=0
for ((i=0;i<3;i++));
do
let sum+=$i #注意+和=之间不要有空格,与Python不同。而且let与expr都是整型运算,不会产生浮点值
done
echo $sum
#浮点运算,scale指定小数位数
ratio=`echo "scale=3; $ini/$comp" | bc` #注意这里的符号不是单引号,是Esc下面的那个按键。
echo $ratio
Shell命令行用Ctrl+u删除光标前的所有字符