编程 关于 `nohup` 和 `&` 的使用说明

2024-11-19 08:49:44 +0800 CST views 1155

在 Linux 环境下,nohup& 是常用的命令,尤其在运行需要长时间执行的脚本时。通过以下示例对比其不同用法及效果。

示例脚本

假设 cli.php 文件内容如下:

<?php
for(;;){
    echo time() . PHP_EOL;
    sleep(1);
}

该脚本会无限循环打印当前时间,并每秒休眠一次。

使用 & 启动脚本

命令

php cli.php &

说明

  • &:表示将命令放入后台运行,并在控制台显示进程号。
  • 特点
    • Ctrl + C 无法停止程序(忽略 SIGINT 信号)。
    • 退出控制台则程序停止(不忽略 SIGHUP 信号)。
    • 需要使用 kill -9 pid 才能强制停止程序。

使用 nohup 启动脚本

命令

nohup php cli.php

说明

  • nohup:忽略挂起信号(SIGHUP),即使关闭终端,程序仍然继续运行。
  • 特点
    • Ctrl + C 可以停止程序(不忽略 SIGINT 信号)。
    • 退出控制台后程序依然运行(忽略 SIGHUP 信号)。
    • nohup 默认不在后台运行,需要手动添加 &

nohup& 组合使用

命令

nohup php cli.php &

说明

  • 同时忽略 SIGHUP 和 SIGINT 信号。
  • 程序在后台运行,即使关闭终端,程序也会继续执行。

配合数据流重定向

命令

nohup php cli.php > cli.log 2>&1 &

说明

  • > cli.log 2>&1:将标准输出和标准错误输出都重定向到 cli.log 文件。
  • 特点
    • 可以将输出记录到日志文件中,避免输出信息干扰控制台。

黑洞重定向

命令

nohup php cli.php > /dev/null 2>&1 &

说明

  • /dev/null:俗称“黑洞”,将输出丢弃,不保存日志。
  • 特点
    • 完全忽略程序的标准输出和错误输出,不占用存储空间。

总结

  • &:表示后台运行程序。
  • nohup:忽略挂起信号,使程序在退出终端后仍能继续运行。
  • nohup + &:常用于需要在后台长期运行的任务。
  • 数据流重定向:用于管理程序的输出,将其保存到日志文件或丢弃。

使用 nohup& 可以确保脚本在退出终端后继续运行,是管理后台任务的重要工具。

推荐文章

推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
Python 基于 SSE 实现流式模式
2025-02-16 17:21:01 +0800 CST
Go中使用依赖注入的实用技巧
2024-11-19 00:24:20 +0800 CST
CSS 奇技淫巧
2024-11-19 08:34:21 +0800 CST
html一些比较人使用的技巧和代码
2024-11-17 05:05:01 +0800 CST
Golang 几种使用 Channel 的错误姿势
2024-11-19 01:42:18 +0800 CST
html文本加载动画
2024-11-19 06:24:21 +0800 CST
CSS Grid 和 Flexbox 的主要区别
2024-11-18 23:09:50 +0800 CST
Go配置镜像源代理
2024-11-19 09:10:35 +0800 CST
php指定版本安装php扩展
2024-11-19 04:10:55 +0800 CST
宝塔面板 Nginx 服务管理命令
2024-11-18 17:26:26 +0800 CST
Linux 常用进程命令介绍
2024-11-19 05:06:44 +0800 CST
使用xshell上传和下载文件
2024-11-18 12:55:11 +0800 CST
PHP中获取某个月份的天数
2024-11-18 11:28:47 +0800 CST
Python中何时应该使用异常处理
2024-11-19 01:16:28 +0800 CST
Vue中的样式绑定是如何实现的?
2024-11-18 10:52:14 +0800 CST
js一键生成随机颜色:randomColor
2024-11-18 10:13:44 +0800 CST
实现微信回调多域名的方法
2024-11-18 09:45:18 +0800 CST
Vue3中的自定义指令有哪些变化?
2024-11-18 07:48:06 +0800 CST
全栈工程师的技术栈
2024-11-19 10:13:20 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
程序员茄子在线接单