在后台无限循环中执行命令的脚本
<SOMETHING ELSE AT START OF SCRIPT>
cmd='while true;
do
ps aux | head;
sleep 1;
done > $FILE'
ssh root@$SERVER $cmd &
...
...
<SOME OTHER TASKS>
...
...
( at the end of this script, how to kill the above snippet executing in remote server)
[ kindly note i dont want to wait as the while loop is infinite ]
阅读并尝试了stackoverflow的一些帖子,但无法找到解决此问题的确切方法。
答案 0 :(得分:1)
如果你想杀死脚本末尾在后台运行的ssh进程,只需执行:
kill $!
我认为这是你在后台开始的唯一(或最后一个)过程。
答案 1 :(得分:1)
使用sentinel文件而不是无限循环:
cmd='while [ -r /tmp/somefile];
do
# stuff
done > $FILE'
ssh root@$SERVER touch /tmp/somefile
ssh root@$SERVER $cmd &
# do other stuff
ssh root@$SERVER rm -f /tmp/somefile
这遵循您目前将远程命令放入变量的做法,但应考虑反对其他地方引用的参数。
答案 2 :(得分:0)
尝试以下序列
CTRL+Z
fg
CTRL+C
或
jobs
kill %jobspec
答案 3 :(得分:0)
要杀死属于登录用户的所有内容,您可以尝试:
whois=`w|grep $user|awk '{print $2}'`;user=root; ssh $user@server -C "ps auwx|grep $whois|awk '{print \$2}'"
这将列出您刚刚登录的用户拥有的所有进程 - 只需添加| xargs kill -9
whois=`w|grep $user|awk '{print $2}'`;user=root; ssh $user@server -C "ps auwx|grep $whois|awk '{print \$2}'|xargs kill -9 "
whois=`w|grep $user|awk '{print $2}'`;user=root; ssh $user@server -C "ps auwx|grep $whois|awk '{print \$2}'|awk '{print "kill -9 " $1}'|/bin/sh "