Jasmine Lognnes
Jasmine Lognnes

Reputation: 7097

Does nohup work across a pipe?

If I do

nohup cmd1 | cmd2 &

is that the same as

nohup "cmd1 | cmd2" &

?

I would like that I nohup everything, as cmd1 will listen on port 8023.

Upvotes: 48

Views: 23196

Answers (5)

pyOwner
pyOwner

Reputation: 650

You always can create a script file and run it with nohup:

echo "cmd1 | cmd2" > nohupScript.sh
nohup nohupScript.sh &

Upvotes: 3

Onnonymous
Onnonymous

Reputation: 1470

You could start your pipe in a screen session. Keystroke Ctrl-a and then d will detach the screen session from your terminal. You can then safely exit your terminal; the pipe will continue to run. Use screen -r to reconnect to the session again.

Upvotes: 2

Wolph
Wolph

Reputation: 80031

No, you need to add the nohup to the commands separately.

Something like this is recommended:

nohup sh -c "cmd1 | cmd2" &

Or alternatively:

nohup $SHELL <<EOF &
cmd1 | cmd2
EOF

Upvotes: 82

Arnab Nandy
Arnab Nandy

Reputation: 6702

nohup cmd1 | cmd2 &

No, I have checked just now this is the as follows

nohup: ignoring input and redirecting stderr to stdout

Upvotes: -2

Politank-Z
Politank-Z

Reputation: 3719

As an alternative to nohup, I recommend

( cmd1 | cmd2 ) > logfile < /dev/null 2>&1 &

By rerouting stdin, stdout, and sterr from the terminal, this achieves much the same effect as nohup with a syntax that I, at least, prefer.

Upvotes: 16

Related Questions