所以我刚刚发现了命令setsid
,它使从终端运行程序变得容易得多。我想知道是否有办法将程序设置为在新会话中自动启动,因为老实说,我setsid
现在可能会在运行的所有程序之前添加它。出于某种原因,这是不好的做法吗?
答案1
除了为你的程序创建别名之外,实际上不可能setsid
在每一个.inputrc
在终端中输入命令。但是,我发现在主文件夹中创建一个并将它放在其中(观察引用)非常有用:
Control-o: "setsid "
现在,您可以在终端中按Ctrl+ ,然后键入命令;如果您需要不断重复,这将节省大量时间。引号的位置没有错误:它允许您在使用快捷方式后立即键入命令。此功能以及更多功能由 bash 的库提供:请参阅或oreadline
man bash
Ubuntu 在线手册页。
关于你的第二个问题,setsid
大量使用并不是坏习惯,只是取决于你的特定需求。事实上,它非常有用,因为正如所指出的在 kernel.org,
如果调用进程不是进程组负责人,setsid 将创建一个新会话。调用进程是新会话的负责人、新进程组的进程组负责人,并且没有控制 tty...调用进程将是此新进程组和此新会话中的唯一进程。
因此,由于新进程已被分叉,因此启动的程序setsid
完全独立于启动它的终端。
还有其他类似但不同的方法可以将程序从终端分离出来,例如nohup
或disown
。 (应该说setsid
是来自软件包的程序util-linux
,而disown
是 bash 内置程序。)这个问题可能很有趣,因为它涉及到这些相关主题: