Linux系统如何设置开机自动运行脚本?
大家好,我是良许。
在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢?
Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。
方法一:修改 /etc/rc.d/rc.local 文件
/etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。
但是,首先需要确认你有运行这个文件的权限。
$ chmod +x /etc/rc.d/rc.local
为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。
$ vim auto_run_script.sh
#!/bin/bash
date >> /home/alvin/output.txt
hostname >> /home/alvin/output.txt
保存退出后,再给它赋予可执行权限:
$ chmod +x auto_run_script.sh
然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行:
$ vim /etc/rc.d/rc.local
/home/alvin/auto_run_script.sh
接下来,我们就可以试试效果了。直接重启系统就可以了:
$ sudo reboot
重启之后,就会在家目录下看到脚本执行的结果了。

方法二:使用 crontab
大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。
我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。
那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。
$ crontab -e
@reboot /home/alvin/auto_run_script.sh
然后,直接重启即可。运行的效果跟上面类似。
方法三:使用 systemd 服务
以上介绍的两种方法,在任何 Linux 系统上都可以使用。但本方法仅适用于 systemd 系统。如何区分是不是 systemd 系统?很简单,只需运行 ps aux 命令,查看 pid 为 1 的进程是不是 systemd 。

为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在 /etc/systemd/system/ 目录下。
我们创建的 systemd 启动服务如下。请注意,这时后缀是 .service ,而不是 .sh 。
$ vim auto_run_script.service
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/home/alvin/auto_run_script.sh
[Install]
WantedBy=default.target
从服务的内容可以看出来,我们最终还是会调用 /home/alvin/auto_run_script.sh 这个脚本。
然后,我们再把这个脚本放置在 /etc/systemd/systerm/ 目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务。
$ systemctl daemon-reload
$ systemctl enable auto_run_script.service
万事俱备之后,我们就可以重启系统啦。
$ reboot
公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章
Linux系统如何设置开机自动运行脚本?的更多相关文章
- Linux、UNIX设置开机自动运行命令、脚本配置
一般我们不建议人工部署开机自动启动的脚本.而是建议通过crontab 部署脚本监控,理由如下: 1.自动开机部署脚本不好定位问题,有可能导致主机重启过慢. 2.自动开机部署脚本不好定位问题,有可能导致 ...
- 怎样启动Nginx并设置开机自动运行
1. 启动 sudo systemctl start nginx.service 2. 设置开机自动运行 sudo systemctl enable nginx.service
- 在Linux中以普通用户开机自动运行脚本程序
测试环境:CentOS6.5 管理员:root 普通用户:test1 实现目标:在Linux启动时,以普通用户test1自动运行位于根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志 ...
- Linux系统如何设置开机程序自启动
在Linux系统如何让程序开机时自动启动 核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”--& ...
- 用 crontab 实现开机自动运行脚本
开发「bufpay.com 个人即时到账收款平台」的时候,订单状态和支付二维码的状态如果过期了要实时修改状态,最大效率利用支付二维码. 过期脚本需要开机启动,并且 deamon 运行,有很多办法可以开 ...
- 设置开机自动运行vncserver
a. 在/etc/rc.d/rc.local文件中加入下面行 /etc/init.d/vncserver startb. 编辑/etc/sysconfig/vncservers VNCSERV ...
- Centos6.4 设置开机自动以某个非root用户启动脚本
开机自动运行脚本,可以将脚本的执行命令放在 /etc/rc.d/rc.local 文件中,但是这样开机自动运行这个脚本的用户默认为root. 如果想以某个非root用户运行脚本,可以使用如下命令: s ...
- /etc/rc.local 与 /etc/init.d Linux 开机自动运行程序
1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里 --------引用---------------------- 在完成 run level 3 ...
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)
#region//开机自动运行 private void CB_Auto_CheckedChanged(object sender, EventArgs e) {//CB_ ...
随机推荐
- Node.js服务器创建和使用
1.使用zlib模块对服务器端响应压缩 //1.1引入zlib模块 const zlib=require('zlib'); //1.2 设置内容的压缩形式 'Content-Encoding': 'g ...
- unity---string.Format()
string.Format用法 string.Format("{0}{1}{2}",str1,str2,str3) string.Format("{0:D2}{1:D2} ...
- 【MySQL】索引的本质(B+Tree)解析
索引是帮助MySQL高效获取数据的排好序的数据结构. 索引数据结构 二叉树 红黑树 Hash表 B-Tree MySQL所使用为B+Tree (B-Tree变种) 非叶子节点不存储data,只存储索引 ...
- Java并发编程入门(一)
一.为什么要并发? 出现背景:操作系统的出现,使计算机同时运行多个程序成为可能. 1.目的: 资源利用率.某些时候,程序必须等待一些外部操作完成(IO)才能继续运行,在等待时间运行其他程序,可以有效提 ...
- zookeeper安装部署步骤
安装步骤 本安装教程,采用zookeeper 3.6.1 装java 下载zk包,分发到各个机器 确定或创建一个zookeeper的数据存放路径,并在该路径下创建一个myid文件,其中设置当前zook ...
- windows10安全及性能优化
一.关闭一些服务. Google 更新服务 (gupdate) Google 更新服务 (gupdatem) HomeGroupListener HomeGroupProvider Xbox Live ...
- android自动化
1.环境安装 JDK 1.8 Appium Android_SDK python https://www.cnblogs.com/xiaohanzi/p/10676720.html https://b ...
- web自动化的一些基础知识
selenium 原理 就是通过webdriver 给浏览器的驱动发送命令,打开浏览器,建立http通信请求 然后通过发送各种命令让浏览器进而执行各种操作 xpath 语法 #xpath定位总结:'' ...
- Activity组件暴露导致本地拒绝服务
这几天团队打算一起学习Android App漏洞挖掘方面的知识,于是乎拿了一个app当测试例子,争取在上面找到漏洞.在学习过程中发现Android四大组件的安全性还是占有较大的比重,另外比较关心的是数 ...
- echo改变字体颜色
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: echo -e "\033[41;36m something here \033 ...