Articles of kill

杀死一个进程和所有后代的安全方法

我使用apparmor , setrlimit , cap_set_rpoc在Linux中创build沙箱环境,让匿名用户在科学应用程序的上下文中基本上执行我的服务器上的一些任意代码。 沙盒中特别允许的一件事是通过分叉和调用可执行文件来启动新进程(尽pipe一个用户的进程总数受RLIMIT_NPROC限制)。 经过一段时间后,比如说1分钟,系统将杀死主进程和所有潜在的subprocess。 我目前正在依靠进程组ID来识别孩子。 然而,从理论上讲,一个subprocess可以调用setpgid来改变它的进程组,所以当我在主进程id(正确的?)上调用kill(-1 * pid)时候,它将不再受到影响。 不幸的是,我没有设置能够阻止进程调用setpgid linux capability 。 杀死一个进程及其所有(recursion的)subprocess的强大方法是什么?这会使孩子们很难以某种方式“逃避”大屠杀并继续孤儿进程?

对于Linux,如何使用系统调用来终止会话中的所有进程(具有相同的SID)?

我正在尝试使用C调用系统调用来清除会话中的所有进程(使用相同的SID)。我不想使用特定的PGID来终止所有进程,因为并不是所有我感兴趣的进程都没有相同的PGID,但它们具有相同的SID。 我的研究只发现了这一点,Graeme为脚本提供了一个很好的答案: https : //unix.stackexchange.com/questions/124127/kill-all-descendant-processes 我很乐意得到一个答案,说明如何杀死所有直系后代的孩子,甚至更高兴我怎么能够在会议中杀死所有的孩子。 或者是我所问的可能? 我不是一个解决scheme,我只是简单地列出父辈的后代的PID。

在Linux的fork和kill之后停止创build核心转储文件

我有如下所示的C ++函数,但它在Linux中创build了一个核心转储文件。 有没有办法阻止它创build核心转储文件? PS:“version.out”有时会挂起,所以我正在创build一个新进程并在1秒钟后将其杀死,以避免程序挂起并稍后从/ tmp / version获取输出。 void bVersion(void) { pid_t pid; pid=fork(); if (pid == 0) { system("version.out > /tmp/version"); } else { // wait for 1 second sleep(1); kill(pid, SIGTERM); mverDir("/tmp/qnbversion"); system("rm /tmp/qnbversion"); } }

bash脚本kill命令超时后

我有bash脚本,为循环中的许多文件工作。 它编译,检查结果等。现在我想在一个thouse文件里面的无限循环的情况下作出安全。 如:如果5分钟后没有完成。 杀死进程并提供相关信息。 gcc -Wall -o "${FN}_execute" ${FN} 2> ${FN}_c_compilation.txt ./${FN}_execute $PARAM > ${FN}_c_result.txt 怎么做?

sudo killall java不是eclipse

什么是“ sudo killall java ”而不是Eclipse过程的好技术? 我已经尝试过在类path上grep技术,但是我尝试过的所有东西似乎都是混乱的。

父进程重启时如何让subprocess死掉

守护进程X产生进程Y. 有时守护进程X可能会突然死掉,在这种情况下,它没有机会正确地终止它的subprocessY (也就是说,进程Y将继续在后台运行)。 如何确保当X突然死亡时Y总是被终止? 目前我已经以这样的方式实现了守护进程X ,如果它突然死了,然后重新启动; 读取进程' Y pid文件并使用kill(pid, SIGTERM)终止Y. 然而,这个解决scheme有其缺点 – 在杀死进程Y之前,我需要确保它的确是进程Y (因为其他一些更新的进程可以重复使用与Y的pid文件相同的进程)。 甚至,如果X检查处理' Y的名字反对/proc/<pid>/ ,那么仍然有一个小窗口,理论上X可以杀死错误的进程。 由于进程Y不是由我开发的,我不能使用Y的 prctl(PR_SET_PDEATHSIG, SIGTERM) 。 而且, system("killall Y")对于我的用例来说太宽泛了。 有没有比我目前有更好的方法来解决这个问题?

BASH – 来自pipe道的怪异字符

我有这个脚本,只是杀死一个应用程序 KEY_NAME=/some/path kill `ps -ef | grep $KEY_NAME | grep -v grep | awk '{ print $2 }'` exit 0 如果我手动编写kill命令作为一个oneliner而不是它的工作。 但是我必须把它作为一个不起作用的脚本来运行。 所以我试图debugging它,这是结果 [user@server logs]$ bash -x ./script.sh + KEY_NAME=/some/path ++ ps -ef ++ grep /some/path ++ grep -v grep ++ awk '{ print $2 }' + kill $'20557\r' : arguments must be process or […]

如何杀死Linux中的特定进程?

我想杀死一个特定的进程(这是一个名为test.exe的程序)。 要做到这一点,我可以键入: ps aux | grep test.exe 接着: kill -9 process_id_of_test_exe 正如你所看到的,我需要多次input命令(而不是立即)。 问题是如何在一个命令中做到这一点。 采取test.exe的process_id并给予杀。 我觉得在这种情况下我需要写一个脚本。 谢谢。

如何杀死STIME的一个Linux进程(dangling svnserve进程)

我是Linux新手,并inheritance了我们的单一Linux服务器运行。 这是我们的SVN服务器,所以这是相对重要的。 发现在我之前维护它的那个人有一个cron的任务,当有太多的svnserve进程运行的时候给他发邮件,因为他们似乎没有正确地终止,而是留下了悬挂。 问题的第一部分是,因为我运行 ps -fu cvsuser 并获得一个进程的列表,我怎么能杀死那些有今天没有STIME的? 例如,类似的东西 kill where STIME = Oct30 另一个问题是,有没有人知道如何避免这些晃荡svnserve进程? (这是另一个问题。)

无法编译调用tgkill的程序

我试图编写一个程序,使用tgkill发送信号到特定的线程,但每当我编译与gcc我得到一个关于“tgkill”未定义的引用的错误。 我试着用-lpthread编译,但没有帮助。 我GOOGLE和谷歌search,不能拿出任何答案。 我怎样才能编译?