我想start.sh在运行这个的远程服务器上执行一个脚本:
nohup node server.js &
Run Code Online (Sandbox Code Playgroud)
天真地,我这样称呼 SSH:
ssh myserver <<EOF
./start.sh &
EOF
Run Code Online (Sandbox Code Playgroud)
这会启动脚本,但会保持会话处于连接状态。我想在脚本中使用其他命令执行此步骤,所以这不好。
如何通过 SSH 连接到远程机器,nohup在后台启动命令,然后断开连接?我想我可以将 SSH 进程本身置于后台,但这似乎不对。
这是我对&,disown和用法的理解nohup:
<command>: 在终端的当前bash实例中运行进程,在前台(即进程被列为bash前台作业stdin,stdout并且stderr仍然绑定到终端);不能免于挂断;<command> &: 在终端的当前bash实例中,在后台运行进程(即进程被列为bash后台作业stdin,stdout并且stderr仍然绑定到终端);不能免于挂断;<command> & disown:在后台运行终端当前bash实例中的进程,但该进程与bash“作业”列表分离(即该进程未列为bash前台/后台作业stdin,stdout并且stderr仍绑定到终端);免于挂断;nohup <command> & disown:运行终端当前的内部流程bash实例,在后台 …考虑以下nohup执行:
nohup script.sh > script.out &
Run Code Online (Sandbox Code Playgroud)
有没有办法注销终端,重新连接,将进程带回前台并使用键盘与其交互?
我是 Ubuntu 的新手。我学会了一个命令
nohup [command]- 运行<command>免疫挂断信号
我无法理解“对挂断信号免疫”的含义。它在谈论什么类型的信号?并请告诉我如何通过示例使用此命令。
我使用该命令$ nohup ...在后台启动应用程序,以便之后可以关闭终端窗口。
执行后,它会创建文件~/nohup.out。
例子:
orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'
Run Code Online (Sandbox Code Playgroud)
如何防止nohup创建nohup.out?
所以我很清楚nohup命令的后缀,&以确保它们进入后台。
但是,如果我运行图形应用程序 - 有时使用两者似乎都无法完成工作。那么我可以用什么前缀来确保程序/命令在终端关闭后继续运行?
我有一个init.d脚本,我希望它在后台工作,即使我从终端退出。但是,我尝试让它在后台运行nohup但“没有希望”,因为当我退出时,通过查看pstree我可以看到 PID 消失并因此nohup停止工作。
问:除了nohup将在前台工作的脚本推送到后台之外,还有其他方法,即使您退出终端后?
服务器是 Ubuntu 16.04。我有一个正在运行的进程,nohup该进程将日志记录到本地文件中。此文件变得足够大以消耗 100% 的磁盘空间。为了解决这个问题,我必须先终止进程,然后删除日志文件。然后我重新开始这个过程。如何使用脚本或其他工具解决此问题?
Ubuntu 服务器 11.10
当普通(非 root)用户使用 nohup (nohup java ... &) 启动进程时,当用户从终端 (ssh) 断开连接时,进程停止响应。当用户再次连接时,进程再次开始响应。例如,该进程是一个数据库(H2),当启动该进程的用户与终端断开连接时停止响应查询,并在用户再次登录时重新开始响应。
是否有任何我不知道的后台进程权限阻止进程在后台运行?什么可能导致这种行为?
我正在运行 KDE Neon,它是 Ubuntu 18.04 Bionic (LTS),其上有最新的 KDE 桌面软件包。
自从从 Xenial 升级到此版本以来,我失去了进程在 SSH 会话断开连接后继续存在的能力...特别是 nohup、tmux、screen、byobu 及其所有子进程在断开连接时都会被杀死。
这是一个简单的测试来演示这个问题
# connect over ssh
cd /tmp
nohup watch date &
ps -ef | grep watch
# disconnect and reconnect
ps -ef | grep watch # process is gone
Run Code Online (Sandbox Code Playgroud)
我尝试将 tmux 和 byobu 恢复到旧版本,然后发现 nohup 也受到影响。这让我相信它要么是 SSHd 配置,要么是 systemd。
显然,systemd 决定更改其默认行为,以便在用户前一段时间断开连接时核对所有用户进程。我尝试通过编辑 /etc/systemd/logind.conf 并设置 KillUserProcesses=no 然后重新启动(服务 systemd-logind 重新启动不起作用)来恢复该行为。没用……我已经束手无策了。
帮助!