我想运行这个命令:
tail -f mylog.log > snippet.log
我想在后台运行它,而不用担心 shell 超时或其他问题。
这会引发警告和错误:
nohup tail -f mylog.log > snippet.log & > nohup2.out (or dev null)
正确的命令是什么?
答案1
你的代码没有意义。
如果你想重定向 stdin 和 stderr 通道,那么你将使用这个:
nohup tail -f mylog.log > ./messages.log 2> ./errors.out
如果您希望所有消息都放入一个文件中,您可以使用:
nohup tail -f mylog.log > all_messages.txt 2>&1
如果你想复制消息,你可以使用:
nohup tail -f mylog.log | tee messages1 messages2 ...
答案2
我认为您正在尝试将 nohup 本身的任何消息获取到 nohup2.out 中,但是 & async 结束了整个命令,最终的重定向只会清空文件。
这似乎有效。我关闭了原始 shell,然后尝试了kill -HUP 和kill -INT,这两种方法都幸免于难。
nohup >nohup2.out 2>&1 bash -c 'tail -f mylog.log > snippet.log' &