在 Linux 系统上,当被 nohuped 的进程需要输入时,有没有办法使用 nohup,例如需要输入密码但随后会自行顺利运行的 rsync 命令?
答案1
如果命令不需要编写脚本,则可以这样做:
- 在前台运行
- 暂停(CTRL+Z)
- 放弃它,以便在你关闭 shell 时它不会被关闭(disown -h %jobid)
- 在后台恢复作业(bg%jobid)
答案2
您想查看屏幕。Screen 将为您创建一个 shell 会话,您可以将其分离,然后稍后重新连接。尝试:
# screen rsync -a directory server@directory
您可以输入密码,验证它是否按预期运行,然后按“ctrl-a”,然后按“d”。现在您应该已脱离屏幕会话。如果您想查看它如何运行,请运行
# screen -r
并且您应该重新连接。'ctrl-a' 'd' 将再次将您分离。
当命令完成时,屏幕应该退出。
答案3
如果可能的话,运行 rsync 命令的特定实例可能会更好地设置无密码的 SSH 密钥认证,而不是尝试自动将密码填入 rsync。
答案4
除了上面所说的内容之外,最通用的解决方案可能是将命令包装在脚本中,该脚本从文件获取输入并将其传递(可能使用管道、expect 或类似的东西)。当然,包装脚本本身只是一个不需要输入的普通命令。