rsync(还有其他命令)使用 nohup 运行会得到 sigterm

rsync(还有其他命令)使用 nohup 运行会得到 sigterm

我正在从我的计算机连接到 HP UX B.11.31 系统,并使用 nohup 运行一些非常冗长的命令,这样我就可以在它们完成的几天内睡觉并做其他事情。

此类命令的示例:

nohup rsync --rsync-path=/usr/local/bin/rsync -e ssh /data/src usr@target:/data/ >> /data/log/sync.out 2>&1 &

注意:Rsync 命令的目标是不同的 HP UX 服务器。

它会一直运行,直到我的计算机以某种方式与 HP UX 系统断开连接(它是通过我的家庭连接上的 VPN 通过 SSH 进行连接的,并且断开连接似乎每天都会发生一次)。

如果发生这种情况,我可以tail /data/log/sync.out并且会发现:

Killed by signal 1.
rsync error: unexplained error (code 255) at rsync.c(549) [sender=3.0.8]

有人建议将该命令放入 shell 脚本中,然后使用 nohup 运行它。

所以我这样做了(使用 shebang for #!/usr/bin/bash),然后将命令运行为nohup ./auto_rsync.sh > /data/log/sync.out 2>&1 &

同样的事情也发生了。

有趣的是,如果我只是在命令运行时通过键入 注销exit,该命令将继续运行。那么为什么只有我的断开连接发送 SIGTERM 到使用 nohup 运行的进程呢?

答案1

我已经有一段时间没有在 HP/UX 上工作了,但是 ssh 应该仍然有一个 ServerAliveInterval 选项。因此,在命令中的 ssh 之后添加“-o ServerAliveInterval=60”。或者可以在 .ssh/config 中将此选项永久化或添加到系统 ssh 配置文件中。

编辑

它在 HP/UX 上的名称有所不同。我找到了一些文档。

https://support.hpe.com/hpsc/doc/public/display?docId=c01892997

在 /etc/opt/ssh/sshd_config 中指定的以下参数允许设置会话终止之前允许的所需不活动时间。

ClientAliveInterval 300
ClientAliveCountMax 6

上述代码将每五分钟(300 秒)发送一条客户端活动消息,最多尝试六次。客户端无响应 30 分钟后,客户端将断开连接。

ClientAliveInterval 默认值 0 确保默认情况下禁用此活动间隔。

相关内容