首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘& disown`’和‘`setsid`’不与ssh一起工作!他们启动了一个‘(sd-pam)’过程,这个过程不起作用。

‘& disown`’和‘`setsid`’不与ssh一起工作!他们启动了一个‘(sd-pam)’过程,这个过程不起作用。
EN

Unix & Linux用户
提问于 2020-10-15 04:58:54
回答 1查看 501关注 0票数 0

我试图在指定的时间后重新启动服务器。

如果在服务器上登录,可以通过这样的命令来实现:

代码语言:javascript
复制
sleep 10 && reboot

为了使此命令保持活动状态(没有tmux或屏幕),即使shell终止,我尝试了许多不同的选项,但setsid& disown是最合适的选项:

代码语言:javascript
复制
setsid bash -c 'sleep 10 && reboot' &

..。或者:

代码语言:javascript
复制
bash -c 'sleep 10 && reboot' & disown

到目前为止,这是在服务器上工作的,即使我关闭了调用此命令的shell。但是,由于我希望通过ssh重新启动服务器,并在调用该命令后立即退出(而不等待指定的sleep时间段),因此我假设能够通过上面调整的命令实现这一点,如下所示:

代码语言:javascript
复制
ssh user@server -t "setsid bash -c 'sleep 10 && reboot' &"

..。或者:

代码语言:javascript
复制
ssh user@server -t "bash -c 'sleep 10 && reboot' & disown"

但有趣的是,这些命令启动一个名为(sd-pam)的进程,该进程将在指定的sleep时间段之后退出,而不执行任何操作。但是,如果您足够频繁地执行该命令,您将发现它在大约10%的情况下是起作用的。我对这种行为进行了调查,发现(sd-pam)进程在许多方面受到限制(例如,无法读写文件--因此,如果重新启动命令抛出错误,则无法记录任何内容)。

所有命令都是在Fedora 32上与root用户一起执行的。

编辑:

感谢@UlrichSchwarz,我偶然发现了这个诡计

代码语言:javascript
复制
echo 'sleep 30; reboot' | at now

这也适用于ssh

代码语言:javascript
复制
ssh user@server -t "echo 'sleep 30; reboot' | at now"

atsetsid& disown有什么不同?

EN

回答 1

Unix & Linux用户

发布于 2020-11-30 13:09:35

我认为您的需求将由关机命令提供服务,如果需要的话,该命令能够将其活动安排到稍后的日期。例如,使用"-r“开关重新启动,使用"+1”延迟1分钟。但是,关机确实需要使用sudo来提升。

代码语言:javascript
复制
sudo shutdown -r '+1'

您也可以使用"now“而不是"+1”来立即重新启动。

代码语言:javascript
复制
sudo shutdown -r now
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/614596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档