Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

On a linux system is there any way to use nohup when the process that is being nohuped required input, such as an rsync command that needs a password to be entered but will then run happily on its own?

share|improve this question
up vote 13 down vote accepted

If the command doesn't have to be scripted, you can do it this way:

  1. run it in the foreground
  2. pause it (CTRL+Z)
  3. disown it so that it won't be closed when you close your shell (disown -h %jobid)
  4. resume the job in the background (bg %jobid)
share|improve this answer
    
"stop it" ... "restart the job"... do you mean "pause it" and "resume the job" ? or really stop the job and start from the beginning again? – ADTC Dec 11 '15 at 4:48
1  
@ADTC: well "stop" is the terminology used by the operating system itself (CTRL+Z sends a TSTP signal), but pause/resume would be more understandable... I'll update the answer :) – Joril Dec 11 '15 at 11:37
    
ctr-z would have killed an scp job. – alvas Jun 28 at 10:18

You want to look at screen. Screen will create a shell session for you, which you can detach and then reattach at a later date. Try:

 # screen rsync -a directory server@directory

You can type in your password, verify that it's running as you expect and then press 'ctrl-a' followed by 'd'. You should now be detached from your screen session. If you want to see how it's getting on, run

 # screen -r

and you should be reattached. 'ctrl-a' 'd' will detach you again.

When the command finishes, screen should quit.

share|improve this answer

If possible it might be better for the specific instance of running an rsync command to set up SSH key authentication without a password rather than try to automatically stuff a password into rsync.

share|improve this answer

Some modules on the remote daemon may require authentication. If so, you will receive a password prompt when you connect. You can avoid the password prompt by setting the environment variable RSYNC_PASSWORD to the password you want to use or using the --password-file option. This may be useful when scripting rsync.

found this in the man page

share|improve this answer

Aside from what's been said above, the most general solution might be to wrap the command in a script that takes input from a file and passes it on (perhaps using pipes, or expect, or something like that). The wrapper script itself is then just a normal command that doesn't require input, of course.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.