需要初始输入时使用 nohup

需要初始输入时使用 nohup

在 Linux 系统上,当被 nohuped 的进程需要输入时,有没有办法使用 nohup,例如需要输入密码但随后会自行顺利运行的 rsync 命令?

答案1

如果命令不需要编写脚本,则可以这样做:

  1. 在前台运行
  2. 暂停(CTRL+Z)
  3. 放弃它,以便在你关闭 shell 时它不会被关闭(disown -h %jobid)
  4. 在后台恢复作业(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 或类似的东西)。当然,包装脚本本身只是一个不需要输入的普通命令。

相关内容