如何在linux中通过init杀死重生的进程

时间:2014-01-09 09:47:35

标签: bash shell kernel tty

我在ttyS1 port.ttyS0上重建了/ bin / bash是我的控制台。 inittab条目如下所示。

:: respawn:/ bin / bash< / dev / ttyS1> / dev / ttyS1 2>的/ dev /就是ttyS1

我的问题是如何禁用/杀死respwning以便我可以使用串口 用于其他应用。

3 个答案:

答案 0 :(得分:4)

您可以像其他进程一样杀死该bash进程。但是,init立即重新生成它 - 没有任何好处。

要禁用该过程,您必须编辑/ etc / inittab并注释掉该行。 要通知init有关此更改,您必须向init发送一个SIGHUP:kill -HUP pid-of-init。 (我认为pid-of-init总是1)。

如果在某些情况下需要将bash连接到ttyS1,则可能需要指定init应该启动bash的某些运行级别。

希望这个答案有所帮助......(有关详细信息,请参阅man inittab

答案 1 :(得分:4)

在我的Ubuntu上,这对我有用:

sudo rm -f /etc/init/<proc_name>.conf
sudo initctl stop <proc_name>

它返回了一条消息:

initctl: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" doesn't exist

但是这个过程无论如何都没有重生就停止了。

答案 2 :(得分:1)

inittab必须重新检查,否则它将启动该进程。 删除命令行链接以在/ etc / inittab上处理并执行:

<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,700i" rel="stylesheet">

# init q

然后,你可以杀死进程,它不会重生。