2016-10-20 68 views
0

我正在执行一个无限循环,从命令行执行一个使用CURL的休息调用。我将其余的o/p重定向到一个文件。我在命令的末尾附加了一个“&”,以便它进入后台。 不幸的是,终端退出了。 但我看到该过程仍在不断写入o/p文件。 但是,我看不到任何使用命令作业运行的后台作业。 即使我使用ps/lsof/fuser来查找进程ID,以便我可以手动杀死它。 但是没有任何命令给我返回进程ID。 我甚至试图将文件更改为只读模式,但我仍然看到文件不断增长。查找后台进程的进程ID

最后我发现chattr命令会限制写入的文件。

但是在这种情况下,我会在哪里找到负责的进程ID。

touch /var/log/test_mon_vm.log;while true; echo "start....." >>/var/log/test_mon_vm.log;echo $(date) >> /var/log/test_mon_vm.log; do /usr/bin/curl -I --user rhqadmin:rhqadmin http://localhost:7080/rest/plugins?name=Samba 2>/dev/null | head -n 1 >> /var/log/test_mon_vm.log; echo "end....." >> /var/log/test_mon_vm.log;echo >>/var/log/test_mon_vm.log;echo >>/var/log/test_mon_vm.log;sleep 1;done & 
+0

你可以提及'while'循环代码吗? – Prabhu

回答

0

您可以找到

ps -fea|grep [your USER] 

的ID,然后在搜索脚本列表中,会有很多人,如果你使用的脚本为脚本的名称替换您的用户

0

您可以使用fg

Background Processes in linux

一旦后台进程是在前台你可以用它杀死它ctrl+c

我希望这有助于!祝你今天愉快!

+0

当我使用命令**作业** –

0

您可以尝试

ps aux | grep "command-you-ran" 

例如

ps aux | grep "curl" 
+0

时没有看到后台进程,我在进程表中看不到该进程。 –