★linux批量删除进程的两种方法&定时删除日志
★linux批量删除进程的两种方法
介绍两种方法。要kill的进程都有共同的字串。
[plain]
kill -9 `ps -ef |grep xxx|awk '{print $2}' `
kill -9后面的符号是Tab键上方那个。
如上就是kill -9 `列出进程,找到包含xxx的行,输出pid的列`
kill、ps、grep都是很常用的命令了。
awk的作用是输出某一列,{print $2}就是输出第二列,如上即是pid这一列。这里有一篇awk的教程http://www.2cto.com/os/201307/230381.html。
[plain]
ps -ef | grep xxx | grep -v root | awk '{print $2}' | xargs kill -9
grep -v这个参数的作用是排除某个字符。所以这里排除了root执行的命令。
之后也利用awk找到pid这一列。
最后的xargs是从标准输出获取参数并执行命令的程序,即从前面的命令获取输出作为参数来执行下一个命令。
pgrep "xxxx" 列出所要查的xxxx程序的pid 也可以&&查多个pid
kill -9 `pgrep "xxxx"` 批量删除查到的pid
★linux定时删除日期文件
两种方法:
1. 在一个目录中保留最近三个月的文件,三个月前的文件自动删除。
find /root/123 -mtime 2 -type f -name "user_action.*" -exec rm -rf {} \; & find /email/v2_bak -mtime +92 -type f -name *.mail[12] -exec rm -rf {} \;
find /root/123 -name "user_action.*" -mtime +7 -exec rm -rf {} \;
/root/123 -name --设置查找的目录;将此命令写入crontab后即可自动完成查找并删除的工作了。
-mtime +2 --设置时间为91天前;
-type f --设置查找的类型为文件;
-name user_action.* & -name *.mail[12] --设置文件名称中包含mail1或者mail2;
-exec rm -f --查找完毕后执行删除操作;
2. 或者用:find . -ctime +40 -type f | xargs rm -rf
1、编写清理日志脚本clear.sh
#!/bin/sh
find /opt/bak -mtime +6 -name "*.log" -exec rm {} \;
find /opt/bak -mtime +6 -name "*.dmp" -exec rm {} \;
find /opt/bak -mtime +6 -name "*.log" -exec rm {} \;
find /opt/bak -mtime +6 -name "*.dmp" -exec rm {} \;
2、给脚本授权
chmod +x clear.sh
3、加入定时执行任务
vi /etc/crontab
在最后加入:00 2 * * * root /opt/sh/clear.sh
4、重启crontab服务
service crond restart