如果与远程服务器的连接丢失,此命令会运行吗?

Mat*_*att 4 sleep nohup

如果我在远程服务器上运行这样的命令:

$ sleep 3h ; date ; nohup long-running-process ; date
Run Code Online (Sandbox Code Playgroud)

... 2 小时后连接丢失,是否会执行完整命令?

如果没有,我如何修改命令以确保即使连接丢失也能运行?

Tim*_*edy 5

不,因为在处理sleep命令之前,连接将断开连接并向所有连接到终端的子进程发送 SIGHUP 信号nohup

如果您需要在特定时间运行命令,您可以:

  • 将您的命令放入脚本中,然后 nohup 脚本。
  • 使用一份at工作来满足一次性需求
  • cron作业用于定期作业
  • 使用tmuxscreen将您的终端保持在与服务器的连接之间。

俗话说,给猫剥皮的方法不止一种。