超过1小时的用户的BASH Kill进程
我正在尝试编写一个一行程序,可以找到一个超过1小时的用户名的所有进程,并杀死它们。我有以下资料:超过1小时的用户的BASH Kill进程,bash,process,kill,Bash,Process,Kill,我正在尝试编写一个一行程序,可以找到一个超过1小时的用户名的所有进程,并杀死它们。我有以下资料: for each in $(find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename {} \;); do kill -9 $file; done 以下部分是正确识别流程: find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename
for each in $(find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename {} \;); do kill -9 $file; done
以下部分是正确识别流程:
find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename {} \;
运行整个程序时,我会出现以下错误:
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
有人能帮忙吗?在循环中,
$each
(each
不是语法的一部分-它是一个变量名)变量保存进程id,而不是$file
试试看:
for each in $(find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename {} \;); do kill -9 $each; done
但是,我建议使用
process\u id
等变量,而不要使用each
,因为这可能会导致这样的错误:)在循环中$each
(each
不是语法的一部分-它是一个变量名)变量保存进程id,而不是$file
试试看:
for each in $(find /proc -maxdepth 1 -user hobbyisl -type d -mmin +60 -exec basename {} \;); do kill -9 $each; done
但是,我建议使用
process\u id
等变量,而不要使用each
,因为这可能会导致这样的错误:)您的for
语句使用变量each
。您的kill
语句使用变量file
。因此,错误。您的for
语句使用变量each
。您的kill
语句使用变量file
。因此,错误。这里是一个使用ps、awk、xargs的单行程序。将用户root
替换为正确的用户,并从xargs中删除echo
,以便实际终止进程
ps -u root -o pid,etime | awk '{split($2,t,":"); split(t[1],t,"-"); if (int(t[2])>1) print $1;}' | xargs -I _ echo kill _
解释一下:
- pid是进程id
- etime是自进程启动以来经过的时间
ps -u root -o pid,etime | awk '{split($2,t,":"); n=0; for(i in t) n++; if(n > 2) { split(t[1],a,"-"); j=0; for(i in a) j++; x=a[1]; if(j>1) {x=a[2]} if(int(x)>0) print $1 }}' | xargs -I _ echo kill _
这是一个使用ps、awk、xargs的单行程序。将用户
root
替换为正确的用户,并从xargs中删除echo
,以便实际终止进程
ps -u root -o pid,etime | awk '{split($2,t,":"); split(t[1],t,"-"); if (int(t[2])>1) print $1;}' | xargs -I _ echo kill _
解释一下:
- pid是进程id
- etime是自进程启动以来经过的时间
ps -u root -o pid,etime | awk '{split($2,t,":"); n=0; for(i in t) n++; if(n > 2) { split(t[1],a,"-"); j=0; for(i in a) j++; x=a[1]; if(j>1) {x=a[2]} if(int(x)>0) print $1 }}' | xargs -I _ echo kill _
如果您在运行的任何发行版中都有该命令,则
killall
命令本机支持此操作:
killall-u foo-o 2m巴
-为用户指定一个-u foo
-按超过2分钟的进程进行筛选-o 2m
附加筛选器(仅在命令中包含“foo”的进程)bar
killall
命令本机支持此操作:
killall-u foo-o 2m巴
-为用户指定一个-u foo
-按超过2分钟的进程进行筛选-o 2m
附加筛选器(仅在命令中包含“foo”的进程)bar
所有的\u CAPS
变量都是“保留”供shell使用的,应该在脚本代码中避免使用。所有的\u CAPS
变量都是“保留”供shell使用的,应该在脚本代码中避免使用。有关如何更正确地逐行读取数据的信息,请参阅。查看如何更正确地按行读取数据。噢,我的印象是“each”是一个函数参数,而不是我的变量。经验教训-非常感谢:)哦,我的印象是“每个”都是一个函数参数,而不是我的变量。经验教训-非常感谢:)