在关闭SSH后在后台运行Linux命令并保持运行状态

5

我需要运行一个Perl脚本,处理一些任务需要持续几天的时间。在Linux Centos服务器上,从SSH终端输入以下命令:

nohup perl script.cgi 2>&1 &

运行此脚本并将输出写入nohup.out文件,在后台运行。

当我关闭SSH终端甚至断开互联网连接时,脚本会终止,所以我需要在关闭SSH终端后在服务器上继续保持此命令运行。


看一下使用“screen”,可能会有帮助。 - mrflash818
3个回答

5
您可以使用终端复用工具,例如screen、byobu或tmux。我个人使用screen,在远程服务器上通过sudo apt-get install screen命令进行安装。
  1. ssh登录到服务器
  2. 通过screen -S sessionname命令打开一个screen会话
  3. 现在运行您的命令(后台/前台都可以)
  4. 现在按下ctrl+a键然后按下d键将会话分离
  5. 现在关闭您的电脑并且享受吧
  6. 现在回来通过ssh登录到服务器,然后使用screen -x sessionname命令重新连接已经分离的会话
太棒了!脚本仍在运行。

3
您可以在Linux系统中使用screen或使用supervisor运行命令。
  • 您可以使用sudo apt install screen安装screen。
  • 然后使用以下命令运行它。
  • screen -S test_command
  • nohup perl script.cgi 2>&1 &
  • 然后按下ctrl+a和ctrl+d,让该会话一直运行,直到您的服务器重新启动。
  • 如果要停止命令,请使用screen -x test_command,然后按下ctrl+c,使用ctrl+a和ctrl+d关闭屏幕,或者使用ctrl+a和ctrl+d保留屏幕会话。
将"Original Answer"翻译成"最初的回答"

0
唯一能让我运行命令并退出shell同时保持命令运行的方法是使用"at"工具按照以下方式调度作业,使用完整的脚本路径:
echo "perl /home/username/www/script.cgi" | at now + 1 minute

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接