nohup
命令本身没有直接的超时自动终止功能。但是,你可以结合其他命令来实现这个需求。这里有一个使用 timeout
命令的例子:
timeout 10s nohup your_command &
在这个例子中,your_command
是你想要执行的命令。timeout
命令会在 10 秒后自动终止 your_command
。&
符号将命令放入后台运行。
如果你想要在超时后获取命令的输出,可以使用以下方法:
timeout 10s nohup your_command > output.log 2>&1 &
这会将标准输出和标准错误输出都重定向到 output.log
文件中。
wait
命令:timeout 10s nohup your_command > output.log 2>&1 &
timeout_pid=$!
wait $timeout_pid
if [ $? -eq 124 ]; then
echo "Command timed out"
else
echo "Command completed successfully"
fi
这个例子中,我们将 nohup
命令放入后台运行,并将其进程 ID 存储在 timeout_pid
变量中。然后,我们使用 wait
命令等待该进程结束。如果进程因为超时而终止,wait
命令会返回 124,我们可以根据这个返回值判断命令是否超时。