终端中默认设置了setsid

终端中默认设置了setsid

所以我刚刚发现了命令setsid,它使从终端运行程序变得容易得多。我想知道是否有办法将程序设置为在新会话中自动启动,因为老实说,我setsid现在可能会在运行的所有程序之前添加它。出于某种原因,这是不好的做法吗?

答案1

除了为你的程序创建别名之外,实际上不可能setsid每一个.inputrc在终端中输入命令。但是,我发现在主文件夹中创建一个并将它放在其中(观察引用)非常有用:

Control-o: "setsid "

现在,您可以在终端中按Ctrl+ ,然后键入命令;如果您需要不断重复,这将节省大量时间。引号的位置没有错误:它允许您在使用快捷方式后立即键入命令。此功能以及更多功能由 bash 的库提供:请参阅或oreadlineman bashUbuntu 在线手册页

关于你的第二个问题,setsid大量使用并不是坏习惯,只是取决于你的特定需求。事实上,它非常有用,因为正如所指出的在 kernel.org

如果调用进程不是进程组负责人,setsid 将创建一个新会话。调用进程是新会话的负责人、新进程组的进程组负责人,并且没有控制 tty...调用进程将是此新进程组和此新会话中的唯一进程。

因此,由于新进程已被分叉,因此启动的程序setsid完全独立于启动它的终端。

还有其他类似但不同的方法可以将程序从终端分离出来,例如nohupdisown。 (应该说setsid是来自软件包的程序util-linux,而disown是 bash 内置程序。)这个问题可能很有趣,因为它涉及到这些相关主题:

相关内容