Linux 脚本开机自启的几种方法

Linux开机脚本:cron @reboot特性详解与实践 Linux系统管理中,开机自动执行脚本是常见的运维需求。cron作为经典的定时任务工具,其@reboot特性提供了一种轻量级的动方案。与systemd和rc.local相比,@reboot在系统服务就绪后执行,避免了依赖未就绪的问题,特别适合简单的初始化任务。通过crontab配置,可以轻松实现用户级或系统级的脚本管理。实际应用中需要注意环境变量设置、日志记录和权限控制等问题。对于需要等待依赖服务或网络就绪的场景,可以在脚本中加入检测逻辑。这种方案在服务器运维、自动化部署等场景中具有广泛的应用价值。 阅读详情

系统启动时需要加载的配置文件

/etc/profile、/root/.bash_profile
/etc/bashrc、/root/.bashrc
/etc/profile.d/*.sh、/etc/profile.d/lang.sh
/etc/sysconfig/i18n、/etc/rc.local(/etc/rc.d/rc.local)

一、修改开机启动文件:/etc/rc.local(或者/etc/rc.d/rc.local)

1.编辑rc.local文件
[root@localhost ~]# vi /etc/rc.local

2.修改rc.local文件,在 exit 0 前面加入以下命令。保存并退出。
/etc/init.d/mysqld start # mysql开机启动
/etc/init.d/nginx start # nginx开机启动
supervisord -c /etc/supervisor/supervisord.conf # supervisord开机启动
/bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null

3.最后修改rc.local文件的执行权限
[root@localhost ~]# chmod +x /etc/rc.local
[root@localhost ~]# chmod 755 /etc/rc.local

二、自己写一个shell脚本

将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。

三、通过chkconfig命令设置

1.将(脚本)启动文件移动到 /etc/init.d/或者/etc/rc.d/init.d/目录下。(前者是后者的软连接)
mv /www/wwwroot/test.sh /etc/rc.d/init.d

2.启动文件前面务必添加如下三行代码,否侧会提示chkconfig不支持。
#!/bin/sh 告诉系统使用的shell,所有的shell脚本都是这样
#chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必须
#description: http server 自己随便发挥!!!,此行代码必须
/bin/echo $(/bin/date +%F_%T) >> /tmp/test.log

3.增加脚本的可执行权限
chmod +x /etc/rc.d/init.d/test.sh

4.添加脚本到开机自动启动项目中。添加到chkconfig,开机自启动。
[root@localhost ~]# cd /etc/rc.d/init.d
[root@localhost ~]# chkconfig --add test.sh
[root@localhost ~]# chkconfig test.sh on

5.关闭开机启动
[root@localhost ~]# chkconfig test.sh off

6.从chkconfig管理中删除test.sh
[root@localhost ~]# chkconfig --del test.sh

7.查看chkconfig管理
[root@localhost ~]# chkconfig --list test.sh

四、自定义服务文件,添加到系统服务,通过Systemctl管理

1.写服务文件:如nginx.service、redis.service、supervisord.service

Description:描述服务
After:描述服务类别

[Service]服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为服务的重启命令
ExecStop 为服务的停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install] 服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target

2.文件保存在目录下:以754的权限。目录路径:/usr/lib/systemd/system。如上面的supervisord.service文件放在这个目录下面。

[root@localhost ~]# cat /usr/lib/systemd/system/nginx.service [root@localhost ~]# cat /usr/lib/systemd/system/supervisord.service
3.设置开机自启动(任意目录下执行)。如果执行启动命令报错,则执行:systemctl daemon-reload

设置开机自启动
[root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl enable supervisord
停止开机自启动
[root@localhost ~]# systemctl disable nginx.service
[root@localhost ~]# systemctl disable supervisord验证一下是否为开机启动[root@localhost ~]# systemctl is-enabled nginx[root@localhost ~]# systemctl is-enabled supervisord

4.其他命令

启动nginx服务
[root@localhost ~]# systemctl start nginx.service
停止nginx服务
[root@localhost ~]# systemctl start nginx.service
重启nginx服务
[root@localhost ~]# systemctl restart nginx.service
查看nginx服务当前状态
[root@localhost ~]# systemctl status nginx.service
查看所有已启动的服务
[root@localhost ~]# systemctl list-units --type=service

5.服务文件示例:

supervisord.service进程管理服务文件Unit
Description=Process Monitoring and Control Daemon # 内容自己定义:Description=Supervisor daemon
After=rc-local.service nss-user-lookup.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.confExecStop= /usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reloadRestart=on-failureRestartSec=42sKillMode=process
[Install]
WantedBy=multi-user.target

nginx.service服务文件Unit
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target

redis.service服务文件
Unit
Description=Redis
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=kill -INT cat /tmp/redis.pid
User=www
Group=www
[Install]
WantedBy=multi-user.target

设置Linux系统开机自动运行脚本 本文介绍了在Linux系统中设置开机自动脚本的五种方法。首先,通过修改/etc/rc.d/rc.local文件,将脚本路径添加到文件末尾,确保脚本在系统动后执行。其次,使用crontab的@reboot任务,在系统重时自动运行脚本。第三种方法适用于systemd系统,通过创建并用systemd服务来实现开机动。第四种方法是在/etc/profile.d/目录下创建.sh文件,系统动时会自动执行该目录下的脚本 阅读详情

相关推荐

自启动配置】Ubuntu 设置开机自启动脚本

自启动配置】Ubuntu 设置开机自启动脚本

challenglistic的博客 5908

linux系统下,配置开机脚本常见的5种方法

Linux开机是指在Linux系统动时,自动运行一些指定的程序或服务。这些程序或服务可以是系统自带的,也可以是用户安装的第三方软件。开机可以方便用户管理系统,提高效率。 在Linux系统中,开机的方式有多种,下面介绍几种常用的方法

景天科技苑 5108

Ubuntu 20.04 设置开机脚本

ubuntu16.04 以后的版本不再使用initd管理系统,因此再支持 update-rc.d 方式添加开机脚本。Ubuntu18 版本开始,使用了systemd 替代了 initd 管理系统,并且默认已经取消了 /etc/rc.local 文件。只能使用 systemctrl 命令进行添加。systemd 默认读取 /etc/systemd/system下的配置文件,该目录下的文件会链接 (软链接)/lib/systemd/system/ 下的文件。

ytusdc的博客 5489

Linux系统如何设置开机脚本

Linux系统开脚本的配置,我这里记录了三种办法,对于绝大多数linux系统,这三种方法里肯定有合适的。

a1367666195的博客 1万+

Linux系统的开机脚本方法

linux设置开机脚本方法

Ge_yangwen的博客 1万+

几种linux开机脚本方法

所以他们可以指向同一个脚本文件,只是传递不同的参数,以产生不同执行结果。对于这种方式,笔者谈不上推荐或不推荐,因为在最新的linux发行版中,该文件已经默认不存在了,所以有很大概率在未来的某个版本开始,将彻底移除这个功能。总的来说,/etc/profile文件是用来配置系统范围的shell环境和行为的,可以对系统的整体行为进行一些设置和调整。中的脚本或命令,每次用户登录都会加载执行,所以如果某些提供服务的脚本放在此处,每次用户登录都会执行该脚本或命令。所以,如果能让脚本开机,还需要加执行权限。

u010230019的博客 7698

redis设置开机

要在Linux系统上使Redis开机,你可以通过多种方式实现。下面我将列出几种常见的方法,适用于不同的Linux发行版。查看所有开机自启动项命令enabled。

weixin_53267951的博客 2762

Linux脚本的三种方法

Linux 脚本开机的三种方法 init进程运行后,它会访问/etc/inittab文件,该文件确定系统运行于上面的哪个级别。由于嵌入式系统的特性,我们要让系统运行于级别1上,即单用户模式,这只要在/etc/inittab文件的id:3:initdefault行,将3改为0即可。同时每个级别还对应了一个动各种服务的脚本目录,一般在/etc/rc.d/下面。 接着init进程又分别动/etc...

weixin_44724865的博客 635

Linux设置开机

systemctl enable /etc/rc.local chkconfig

ArYe 1万+

Linux之service服务-实现程序脚本开机

使用service服务实现程序脚本开机

qq_34885669的博客 1万+

Linux 系统中设置 Service 服务开机的详细指南

Linux 中,服务是后台运行的进程,它们在系统动时开始运行,并且在系统关闭时停止。systemd:大多数现代 Linux 发行版(如 CentOS 7+、Ubuntu 16.04+、Debian 8+)都使用systemd来管理系统服务。sysvinit:一些较老的 Linux 发行版(如 CentOS 6 或 Ubuntu 14.04)使用sysvinit来管理服务。每种服务管理工具都有自己的配置方式和管理命令。在现代 Linux 系统中,systemd。

私聊前往站内信:https://i.csdn.net/#/msg/chat/weixin_44976692 1万+

【Shell脚本Linux安装Nginx以及开机

【代码】【Shell脚本Linux安装Nginx以及开机

山赶着山,山山漫漫结成关 7372

Linux开机几种方式

给客户在局域网内搭了一套系统,需要开机tomcat、nginx服务等,最终采用了第四种最简单的方式。 1. 通过添加系统服务的方式 需要先将程序添加为系统服务,然后chkconfig --add 服务名。 较为繁琐 1.在/etc/init.d 下建立相关程序的脚本 ln -s /etc/init.d/服务名 /etc/rc.d/rc3.d/S100服务名 //S:开机自启动 10...

程序员小潘 5324

设置Shell脚本开机

如果脚本没有做统一管理的话,也可以直接在init.d目录下创建脚本。这三行必须放在脚本前三行。2345开则成功添加开机。执行无效的话尝试切换到。

我这孩子从小记性就不好,什么东西都要写下来才放心 8563

linux系统中开机的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一) chkonfig 命令行运行级别设置 ntsysv 伪图形运行级...

灬紫荆灬 2万+

Linux系统【Ubuntu】开机脚本及配置

Linux系统【Ubuntu】开机脚本及配置1、使用vim命令在`/etc/init.d`目录下新建一个xx.sh,文件名可自定义,以test.sh为例2、保存成功以后,设置文本权限,否则不生效3、将命令脚本添加到脚本中去4、如需移除自启动,运行以下命令5、输入 `reboot` 命令重服务器,使用命令查看jar包是否已经成功自启动。update-rc.d 的详细参数参考文献 1、使用vim命令在/etc/init.d目录下新建一个xx.sh,文件名可自定义,以test.sh为例 vim /etc

Roc的博客 8413

linux-centos7设置命令/脚本开机

文字太多不看系列,可以简单看下这几个步骤 如果只是添加一条开机动的命令: 1. chmod +x /etc/rc.d/rc.local (增加可执行权限) 2. 赋予脚本执行的权限,同时将命令追加到 /etc/rc.d/rc.local 这个文件中 chmod +x '/opt/script/auto/autostart.sh' 追加的命令是 : su - user -c '/opt/script/auto/autostart.sh' /opt/script/auto/autosta

一个crud的码农 1943
上一篇: MongoDB的数据库导入和导出
下一篇: openoffice中遇到的问题回顾
写bug小能手
博客等级 码龄9年 99粉丝 54原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值