Linux系统启动任务的写法

本文介绍如何在CentOS系统中设置Nginx和PHP-FPM开机自启动。通过编辑rc.local文件并赋予执行权限,可以确保服务随系统启动而自动运行。同时,文章还解释了Linux系统的运行级别及其意义。

1.到/etc/rc.d目录
# cd /etc/rc.d


2.修改rc.local

# vim ./rc.local
你之前是怎么启动nginx和php命令复制即可。
例如:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/etc/init.d/php-fpm

 

3.一定要给权限 

chmod +x rc.local
特别是喜欢下载到本地修改,重新上传上去的会权限初始化也就是只有“只读”权限。

 

4.rc.sysinit文件也可以实现类似功能,千万不要加这里,这个是Linux系统启动的最初级命令,会导致系统不能启动,后果很严重。

 

注意,不同的机器开机级别不一样。

开机级别是3

# cd /etc/rc.d/rc3.d

# cat s99local

 

 

Linux开机运行级别

1、在核心加载完毕,进行硬件信息这测与驱动程序加载之后,此时你的主机硬件应该已经准备就绪了,此时核心会主动的呼叫第一个用户级程序,那就是 /sbin/init (init 被称为所有进行的祖进程,也是第一个启动的用户级进程)

2、 /sbin/ init 最主要的功能就是准备软件执行的环境,包括系统的主机名,网络设定,语系设置,系统文件格式及其他服务的启动, 而所有的动作都会透过 init 的配置文件及 /etc/inittab 来规划。

3、 /etc/inittab 中配置了系统的运行级别 , 这个档案的最下面 有 id : n : initdefault 这就是设置的系统运行级别

4、为何要设置系统的运行级别,这个有什么不同: linux藉由 设定的 run level 来规划,系统使用不同的服务来启动,让linux 的使用环境不同,按照有无网络与有无 xwindow可分为 7 个等级

5、 run level 运行级别

(0)、run level 0: 关机
(1) 、run level 1 : single mode 即单人维护模式,一般忘记 root的密码,系统有问题什么的使用这个模式

(2)、run level 2 : without NFS 即无NFS系统

(3)、run level 3: 完整含有网络功能的纯文本模式

(4)、run level 4: 系统保留

(5)、run level 5: xwinods 与3 是类似的只是纯文本变为窗口模式

(6)、run level 6: 重启 reboot
6、启动时执行一次的文件, /etc/rc.d/rc.sysinit 即系统的数据设定完成!

7、启动系统 服务与 启动配置文件 /etc/rc,d/rc n(你的系统级别,按照不同的级别启动不同的服务) /etc/sysconfig

8、加载核心让整个系统准备接受指令来工作,在经过 /etc/rc.d/rc.sysinit 的系统模块与相关硬件信息的初始化,你的系统应该已经顺利工作了!

 

参考:CentOS设置程序开机自启动的方法

<think>我们有一个明确的问题:用户想在Linux系统中以后台模式启动程序,并将输出丢弃(即输出到黑洞)。黑洞在Linux中通常指的是`/dev/null`设备,它会丢弃所有写入它的数据。根据引用[2]和引用[4],我们知道Linux中标准输出(stdout)和标准错误输出(stderr)的文件描述符分别是1和2。我们可以将输出重定向到`/dev/null`。同时,引用[3]提到,要让程序在后台运行并且不受终端关闭的影响,我们可以使用`nohup`命令,但是注意`nohup`默认会将输出重定向到当前目录的`nohup.out`文件中。而用户希望丢弃输出,所以我们需要显式地将输出重定向到`/dev/null`。因此,我们可以使用以下命令:nohupcommand>/dev/null2>&1&解释:-`nohup`:确保命令在用户注销后继续运行。-`command`:要运行的程序或命令。-`>/dev/null`:将标准输出重定向到`/dev/null`(即丢弃标准输出)。-`2>&1`:将标准错误输出重定向到标准输出,因为标准输出已经重定向到`/dev/null`,所以标准错误输出也会被丢弃。-`&`:将命令放入后台运行。另外,如果不需要在注销后继续运行,而只是需要后台运行并丢弃输出,可以省略`nohup`,使用:command>/dev/null2>&1&但是,根据用户需求“以后台模式启动程序,并将输出丢弃”,两种方式都可以,但通常如果用户希望程序长期运行且不受终端关闭影响,则使用`nohup`版本。根据引用[1]中提到的环境变量问题,如果命令因为环境变量问题无法运行,可能需要指定完整的路径或设置环境变量。但用户的问题中没有提到环境变量问题,所以我们只需给出重定向的命令。总结步骤:1.使用`nohup`(如果需要程序在退出终端后继续运行)或者不使用(如果只是后台运行,但终端关闭后程序会终止)。2.将标准输出和标准错误输出都重定向到`/dev/null`。3.在命令末尾加上`&`,使命令在后台运行。示例:nohup/path/to/your/program>/dev/null2>&1&或者(不使用nohup):/path/to/your/program>/dev/null2>&1&注意:如果程序需要输入(从标准输入读取),那么重定向输出不会影响输入。如果程序试图读取输入,而用户又关闭了终端,可能会遇到问题。这种情况下,通常也需要将标准输入重定向,例如从`/dev/null`读取(即`</dev/null`)。但用户问题中没有提到输入,所以这里我们只处理输出。因此,完整的命令可以是:nohupcommand</dev/null>/dev/null2>&1&这样,标准输入也被重定向为空,避免程序等待输入。但是用户只要求输出丢弃,所以我们可以先提供最基础的输出重定向,然后根据情况补充输入重定向。根据用户需求,我们给出两种场景:1.只需要后台运行并丢弃输出,且不关心终端关闭后是否继续运行:command>/dev/null2>&1&2.需要后台运行,丢弃输出,并且终端关闭后继续运行:nohupcommand>/dev/null2>&1&如果程序可能试图读取标准输入,为了避免程序挂起等待输入,我们可以将标准输入也重定向到`/dev/null`:nohupcommand</dev/null>/dev/null2>&1&或者command</dev/null>/dev/null2>&1&现在,我们按照用户的要求,给出答案。</think>在 Linux 系统中,将程序以后台模式启动并丢弃输出(输出到黑洞)的标准方法是使用输出重定向到 `/dev/null` 设备,并结合后台运行符号 `&` 或 `nohup`。以下是具体实现方法: ### 📌 标准后台运行并丢弃输出 ```bash command > /dev/null 2>&1 & ``` - **`> /dev/null`**:将标准输出(stdout)重定向到黑洞设备 - **`2>&1`**:将标准错误(stderr)重定向到标准输出(即同样丢弃) - **`&`**:将进程放入后台运行 - **适用场景**:临时后台任务,关闭终端时进程会终止[^3] ### 📌 持久化后台运行并丢弃输出(终端关闭不中断) ```bash nohup command > /dev/null 2>&1 & ``` - **`nohup`**:忽略挂断信号(SIGHUP),确保终端关闭后进程继续运行[^3] - **输出处理**:所有输出(stdout/stderr)被永久丢弃 - **适用场景**:需要长期运行的服务或任务 ### 📌 更简洁的丢弃输出写法(Bash 4+) ```bash command &> /dev/null & ``` 或 ```bash nohup command &> /dev/null & ``` - **`&>`**:同时重定向 stdout 和 stderr 的简写语法[^2] ### ⚠️ 注意事项 1. **输入重定向**:如果程序需要交互输入,需额外重定向标准输入: ```bash nohup command < /dev/null > /dev/null 2>&1 & ``` 2. **环境变量问题**:后台程序可能因缺少终端环境变量而异常,建议: ```bash nohup bash -c "export ENV_VAR=value; command" &> /dev/null & ``` 3. **进程管理**:启动后可通过 `jobs -l` 查看后台任务,用 `fg` 切回前台 > **技术原理**:`/dev/null` 是 Linux 的特殊设备文件,所有写入它的数据会被立即丢弃,读取它会立即返回 EOF[^4]。配合文件描述符重定向(0:stdin, 1:stdout, 2:stderr)实现输入输出黑洞[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值