Hello! 欢迎来到小浪云!


nohup命令在Linux中如何设置超时时间


nohup命令在Linux中如何设置超时时间

Linux系统中的nohup命令本身并不支持设置超时时间。但是,我们可以巧妙地结合timeout命令来实现这一功能。

以下示例演示如何使用timeout命令限制nohup命令的运行时间:

假设您有一个名为my_script.sh的脚本,希望它在后台运行,并在3600秒(1小时)后自动终止。您可以使用以下命令:

timeout 3600 nohup ./my_script.sh &

timeout命令会先启动nohup ./my_script.sh,并在指定时间后强制结束该进程。&符号将命令放入后台运行。

为了在超时后获得通知,您可以使用更复杂的脚本:

timeout 3600 nohup ./my_script.sh > /dev/NULL 2>&1 &  # 获取timeout进程的PID timeout_pid=$!  # 等待timeout进程结束 wait $timeout_pid  # 检查timeout进程的退出状态码 if [ $? -eq 124 ]; then   echo "命令超时!" else   echo "命令正常结束。" fi

这段脚本将nohup命令的标准输出和标准错误重定向到/dev/null,避免输出干扰。 $! 获取后台进程的PID,wait命令等待该进程结束,最后根据退出状态码判断是否超时。超时状态码通常为124。

通过以上方法,您可以有效地控制nohup命令的运行时间,避免长时间运行的进程占用系统资源。 请记住替换my_script.sh为您的实际脚本名称。

相关阅读