Linux 系统设置开机自动运行脚本的方法

这篇具有很好参考价值的文章主要介绍了Linux 系统设置开机自动运行脚本的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux 系统设置开机自动运行脚本的方法

linux开机执行脚本,linux,运维,bash

目录

linux开机执行脚本,linux,运维,bash

前言

在工作中,我们经常有个需求,那就是在系统启动之后,自动启动某个脚本或服务。在 Windows 下,我们有很多方法可以设置开机启动,但在 Linux 系统下我们需要如何操作呢?

Linux 下同样可以设置开机启动,但可能需要我们敲一些命令(可能也有 UI 界面的设置方法,但我不熟,我更多是玩命令)。下面我们就介绍三种简单但可行的开机启动设置方法。

方法一:修改 /etc/rc.d/rc.local 文件

这种方法,在任何 Linux 系统上都可以使用。

/etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。

  • 测试环境
centos7.6 1810

测试软件:无

  • 我们先来查看下这个文件的内容是什么
[root@Devops6 ~]#ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 Oct 31  2018 /etc/rc.d/rc.local
[root@Devops6 ~]#cat  /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
  • 但是,首先需要确认你有运行这个文件的权限。
[root@Devops6 ~]#chmod +x /etc/rc.d/rc.local
[root@Devops6 ~]#ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Oct 31  2018 /etc/rc.d/rc.local
  • 为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。
[root@Devops6 ~]#vim auto_run_script.sh
#!/bin/bash
date >> /root/output.txt
hostname >> /root/output.txt
  • 保存退出后,再给它赋予可执行权限:
[root@Devops6 ~]#chmod +x auto_run_script.sh 
[root@Devops6 ~]#ll auto_run_script.sh 
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
  • 然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行:
[root@Devops6 ~]#vim /etc/rc.d/rc.local
/root/auto_run_script.sh

linux开机执行脚本,linux,运维,bash

  • 接下来,我们就可以试试效果了。直接重启系统就可以了:
[root@Devops6 ~]#ll
total 4
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
[root@Devops6 ~]#reboot
  • 重启后观察现象
[root@Devops6 ~]#ll
total 8
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
-rw-r--r-- 1 root root  37 Mar 20 06:58 output.txt
[root@Devops6 ~]#cat output.txt 
Mon Mar 20 06:58:04 CST 2023
Devops6

符合预期。

方法二:使用 crontab

这种方法,在任何 Linux 系统上都可以使用。

  • 测试环境
centos7.6 1810

测试软件:无

大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。

我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。

那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?

  • 为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。
[root@Devops6 ~]#vim auto_run_script2.sh
#!/bin/bash
date >> /root/output2.txt
hostname >> /root/output2.txt
  • 保存退出后,再给它赋予可执行权限:
[root@Devops6 ~]#chmod +x auto_run_script2.sh 
[root@Devops6 ~]#ll auto_run_script2.sh 
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script2.sh
  • 我们可以通过 crontab -e 来设置。
@reboot /root/auto_run_script2.sh

但是这里编辑完,有提示一些异常log:(这里的log可忽略,最后的效果符合预期。)

linux开机执行脚本,linux,运维,bash

#查看也是有定时任务的
[root@Devops6 ~]#crontab -l
@reboot /root/auto_run_script2.sh
  • 然后,直接重启即可。运行的效果跟上面类似。
#重启
[root@Devops6 ~]#reboot

#观察效果
[root@Devops6 ~]#ll
total 16
-rwxr-xr-x 1 root root 474 Mar 20 07:01 auto_run_script2.sh
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
-rw-r--r-- 1 root root  37 Mar 20 07:04 output2.txt
-rw-r--r-- 1 root root  74 Mar 20 07:04 output.txt
[root@Devops6 ~]#cat output2.txt 
Mon Mar 20 07:04:19 CST 2023
Devops6
#可以看到,是符合预期的。

方法三:使用 systemd 服务

  • 测试环境
centos7.6 1810

测试软件:无

  • 次方法仅适用于 systemd 系统。如何区分是不是 systemd 系统?很简单,只需运行 ps aux 命令,查看 pid 为 1 的进程是不是 systemd 。
[root@Devops6 ~]#ps aux|more
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.3  0.2  43380  3728 ?        Ss   07:04   0:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    07:04   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    07:04   0:00 [ksoftirqd/0]
……
  • 为了演示,我们创建了一个脚本,当它被执行之后,将在家目录下写入有特定信息的文件。
[root@Devops6 ~]#vim auto_run_script3.sh
#!/bin/bash
date >> /root/output3.txt
hostname >> /root/output3.txt
  • 保存退出后,再给它赋予可执行权限:
[root@Devops6 ~]#chmod +x auto_run_script3.sh 
[root@Devops6 ~]#ll auto_run_script3.sh 
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
  • 为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在 /etc/systemd/system/ 目录下。

我们创建的 systemd 启动服务如下。请注意,这时后缀是 .service ,而不是 .sh 。

$ vim /etc/systemd/system/auto_run_script3.service
[Unit]
Description=Run a Custom Script at Startup
After=default.target
 
[Service]
ExecStart=/root/auto_run_script3.sh
 
[Install]
WantedBy=default.target

从服务的内容可以看出来,我们最终还是会调用 /root/auto_run_script3.sh 这个脚本。

  • 然后,我们再把这个脚本放置在 /etc/systemd/systerm/ 目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务。
[root@Devops6 ~]#systemctl daemon-reload
[root@Devops6 ~]#systemctl enable auto_run_script3.service
Created symlink from /etc/systemd/system/default.target.wants/auto_run_script3.service to /etc/systemd/system/auto_run_script3.service.
  • 万事俱备之后,我们就可以重启系统啦。
#重启
[root@Devops6 ~]#reboot

#观察效果
[root@Devops6 ~]#ll
total 24
-rwxr-xr-x 1 root root 474 Mar 20 07:01 auto_run_script2.sh
-rwxr-xr-x 1 root root 474 Mar 20 07:13 auto_run_script3.sh
-rwxr-xr-x 1 root root 472 Mar 20 06:55 auto_run_script.sh
-rw-r--r-- 1 root root 111 Mar 20 07:14 output2.txt
-rw-r--r-- 1 root root  37 Mar 20 07:14 output3.txt
-rw-r--r-- 1 root root 148 Mar 20 07:14 output.txt
[root@Devops6 ~]#cat output3.txt 
Mon Mar 20 07:14:57 CST 2023
Devops6
#可以看到,是符合预期的。

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

🍀 微信公众号
《云原生架构师实战》

🍀 语雀

https://www.yuque.com/xyy-onlyone

linux开机执行脚本,linux,运维,bash

🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

linux开机执行脚本,linux,运维,bash

🍀 知乎
https://www.zhihu.com/people/foryouone

linux开机执行脚本,linux,运维,bash

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!文章来源地址https://www.toymoban.com/news/detail-520478.html

到了这里,关于Linux 系统设置开机自动运行脚本的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux系统中同时执行多个脚本运行方法(&&、||、;、&)

            前一个运行成功后,才运行下一个。单进程执行。 注意: 若中途某个脚本执行报错,后面的脚本不再执行。 修改bb.py文件:         前一个运行失败后,才运行后面一个脚本。单进程执行。 注意: 遇到第一个执行成功的脚本后,后面的脚本不再执行。 修改

    2024年02月16日
    浏览(49)
  • Linux CentOS7系统上设置Docker开机自启(复杂方法+简单方法)

    1.打开终端并使用root权限登录系统。默认会进入root目录下 使用cd命令 进入etc目录 2.进入etc目录下后,编辑rc.local文件 (1)这里我本人是比较喜欢使用vim多模式编辑器编辑文件,如果使用vim多模式编辑器编辑文件,输入vim rc.local即可编辑文件 [注意] 最小化的CentOS7系统是没有

    2024年02月07日
    浏览(48)
  • 部署问题集合(十九)linux设置Tomcat、Docker,以及使用脚本开机自启(亲测)

    因为不想每次启动虚拟机都要手动启动一遍这些东西,所以想要设置成开机自启的状态 创建service文件 添加如下内容,注意修改启动脚本和关闭脚本的地址 设置开机自启: systemctl enable tomcat 重新载入配置文件,使设置生效: systemctl daemon-reload 重新启动看看效果: reboot (如

    2024年02月11日
    浏览(41)
  • Amazon Linux上使用ec2-user来设置开机自启动的shell脚本

    要在Amazon Linux上使用ec2-user来设置开机自启动的shell脚本,可以按照以下步骤操作:   1. 确保您拥有要设置自启动的shell脚本。假设脚本的路径是`/home/ec2-user/myscript.sh`。   2. 使用以下命令打开`/etc/rc.d/rc.local`文件:    ```shell    sudo nano /etc/rc.d/rc.local    ```   3. 在文件末尾添

    2024年02月15日
    浏览(57)
  • “Linux免除系统交互操作方法、expect自动化交互工具” 及 “SSH批量修改主机密码脚本”

    案例:为机器磁盘进行分区并实现挂载,免交互式操作,如何实现? 注意:有些命令的交互操作提示是不算在标准输出和错误输出中的,此时该方法不适用 注意:命令的交互操作提示是不算终端窗口的,此时该方法不适用 一. expect 简介 expect 工具是一个根据脚本与其他交互

    2024年02月08日
    浏览(56)
  • 14 | linux设置开机自启动的三种方法

    vim /etc/rc.local reboot下服务器,看该服务,还在不在 注意:在/etc/rc.d/init.d下是shell脚本或者可执行二进制文件 可执行权限 chmod +x filename 重启服务reboot,查看该服务是否还在 制作service服务并设置开机自启动 以nginx为例 安装路径:/usr/local/nginx 在/etc/systemd/system/路径下创建nginx.s

    2024年02月16日
    浏览(37)
  • RK android 9.0 添加sh脚本开机自动运行

    diff --git a/device.mk b/device.mk old mode 100644 new mode 100755 index 4c698b7..c635798 --- a/device.mk +++ b/device.mk @@ -126,6 +126,8 @@ PRODUCT_COPY_FILES +=      $(call add-to-product-copy-files-if-exists,device/rockchip/common/init.$(TARGET_BOARD_HARDWARE).bootmode.nvme.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.$(TARGET_BOARD_HARDWARE).bootm

    2024年02月08日
    浏览(81)
  • Linux开机自动挂载文件系统的几种方式

    在Digitalocean上,给主机添加硬盘时,为了免去分区、格式化、挂载等麻烦,可以选择让运营商帮忙自动完成以上操作。 查看文档可知,运营商在添加硬盘时,在挂载阶段自动执行了以下脚本: 1). 创建挂载目录。 mkdir -p /mnt/volume 2). 挂载硬盘(临时挂载,主机重启后失效)。

    2024年02月09日
    浏览(43)
  • 安卓系统开机运行shell脚本

    在安卓系统上很多业务需求是通过shell脚本实现的,开机自启动一般做法是创建安卓service服务,然后通过该服务调用执行shell脚本。详细步骤: 如下shell脚本功能为:循环查询系统下是否有厂商ID为0x1A86的USB转串口设备匹配到了CDC-ACM驱动上,若是则解绑USB设备和CDC-ACM驱动的绑

    2024年02月08日
    浏览(49)
  • Windows 开机启动脚本 (不询问自动以管理员权限运行bat)

    获取开机启动文件夹 之后将“你的.bat”文件放入“开机启动文件夹”内即可 快捷键Win+R,zhixing shell:startup 打开用户级的开机自启文件夹 或者cmd执行: 之后将“你的.bat”文件放入“开机启动文件夹”内即可 相关参考: Windows设置程序开机自启动的几种方法(整理发布) 使用

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包