当需要初始input时使用nohup

linux系统上有没有办法使用nohup,当进程被nohuped需要input时,比如需要input密码的rsync命令,然后会自动运行呢?

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

  1. 在前台运行它
  2. 暂停它(CTRL + Z)
  3. 将其closures,以便closuresshell时不会closures(disown -h%jobid)
  4. 在后台恢复工作(bg%jobid)

你想看看屏幕。 屏幕将为您创build一个shell会话,您可以分离并在稍后重新连接。 尝试:

# screen rsync -a directory server@directory 

你可以input你的密码,validation它是否按你所期望的那样运行,然后按'ctrl-a'然后按'd'。 你现在应该脱离你的屏幕会话。 如果你想看看它是如何发展,运行

  # screen -r 

你应该重新贴上。 'ctrl-a''d'会再次分离你。

当命令结束时,屏幕应该退出。

如果可能的话,运行rsync命令的特定实例可能会更好地设置不带密码的SSH密钥身份validation,而不是尝试自动将密码填充到rsync中。

远程守护进程上的某些模块可能需要身份validation。 如果是这样,连接时会收到密码提示。 您可以通过将环境variablesRSYNC_PASSWORD设置为要使用的密码或使用–password-file选项来避免密码提示。 这在编写rsync脚本时可能很有用。

在手册页中find了这个

除了上面所说的,最通用的解决scheme可能是将命令封装在一个脚本中,该脚本从一个文件获取input并将其传递(可能使用pipe道,或期望或类似的东西)。 包装脚本本身就是一个普通的命令,当然不需要input。