首页
学习
活动
专区
圈层
工具
发布

linux开机启动root脚本

基础概念

Linux开机启动脚本是指在系统启动时自动执行的脚本,通常用于初始化系统环境、启动服务等操作。这些脚本可以放在不同的位置,如 /etc/init.d//etc/rc.d//etc/systemd/ 等目录下,具体取决于Linux发行版和使用的初始化系统。

相关优势

  1. 自动化:通过开机启动脚本,可以实现系统的自动化初始化和服务的自动启动,减少人工干预。
  2. 灵活性:可以根据需要编写自定义脚本,满足特定的启动需求。
  3. 可维护性:将启动逻辑集中在脚本中,便于管理和维护。

类型

  1. SysV Init 脚本:传统的初始化系统,脚本通常放在 /etc/init.d/ 目录下,通过 chkconfigupdate-rc.d 命令管理。
  2. Systemd 脚本:现代Linux发行版常用的初始化系统,脚本通常放在 /etc/systemd/ 目录下,通过 systemctl 命令管理。

应用场景

  1. 服务启动:在系统启动时自动启动某些服务,如Web服务器、数据库服务器等。
  2. 环境配置:在系统启动时自动配置网络、设置环境变量等。
  3. 日志记录:在系统启动时自动启动日志记录服务,记录系统运行日志。

示例代码

SysV Init 脚本示例

假设我们要在系统启动时启动一个名为 my_service 的服务,可以编写如下脚本:

代码语言:txt
复制
#!/bin/bash
# /etc/init.d/my_service

case "$1" in
  start)
    echo "Starting my_service..."
    /path/to/my_service &
    ;;
  stop)
    echo "Stopping my_service..."
    kill $(cat /var/run/my_service.pid)
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

然后通过以下命令启用和启动服务:

代码语言:txt
复制
chmod +x /etc/init.d/my_service
chkconfig --add my_service
chkconfig my_service on
service my_service start

Systemd 脚本示例

假设我们要在系统启动时启动一个名为 my_service 的服务,可以编写如下脚本:

代码语言:txt
复制
# /etc/systemd/system/my_service.service

[Unit]
Description=My Service
After=network.target

[Service]
ExecStart=/path/to/my_service
Restart=always
User=myuser
Group=mygroup

[Install]
WantedBy=multi-user.target

然后通过以下命令启用和启动服务:

代码语言:txt
复制
systemctl daemon-reload
systemctl enable my_service
systemctl start my_service

常见问题及解决方法

脚本未执行

原因:脚本权限不足或脚本路径错误。

解决方法

代码语言:txt
复制
chmod +x /path/to/script

确保脚本路径正确。

服务启动失败

原因:脚本逻辑错误或依赖的服务未启动。

解决方法

检查脚本逻辑,确保所有命令都能正确执行。使用 systemctl status my_service 查看服务状态,根据错误信息进行排查。

脚本执行顺序问题

原因:某些服务需要在其他服务启动后才能启动。

解决方法

在Systemd脚本中使用 After 指令指定依赖的服务,例如:

代码语言:txt
复制
After=network.target another_service.service

通过以上详细解答,希望你能对Linux开机启动脚本有更深入的了解,并能解决相关问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • linux添加开机启动脚本 原

    0——关机, 1——单用户,就是我们之前修改root账户密码的模式, 2——多用户模式,但比3模式少了一个nfs服务 3——多用户命令行模式,最常用 4——保留级别暂时没用, 5——图形模式,...6——重启 一、chkconfig-CentOS6以前 chkconfig就是CentOS6以前用来控制系统服务的工具,系统开机时启动的部分服务存储在/etc/init.d/目录下。...我们可以把需要开机启动的服务放在这个目录下然后用chkconfig来管理。 查看命令 chkconfig --list #列出所有的系统服务。...操作命令 针对单一服务的 systemctl enable crond ##设置开机启动crond服务或工具 systemctl disable crond ##设置关闭开机启动crond服务或工具 systemctl....html 2.Nginx+Center OS 7.2 开机启动设置:https://www.cnblogs.com/piscesLoveCc/p/5867900.html 3.Linux 设置程序开机自启动

    2.2K30

    linux部署jar包脚本和注册开机启动

    前言 之前开发了windows部署jar包为服务的工具在实际生产环境中使用非常简单方便,公司部分项目是部署在linux系统中的,所以决定整合一个通用的jar包部署脚本,并注册为开机启动服务,为开发实施的同事提供方便...,以下操作实际系统环境为centos8 通过脚本启动 安装jdk,可以不配置环境变量 脚本和部署jar包放置在同一个文件夹 修改脚本deploy.sh中的JAVA_HOME指向jdk目录,.../deploy.sh stop 注册服务启动 需要执行完毕【通过脚本启动】步骤配置内容 修改deploystart.sh和deploystop.sh脚本内容重的cd路径为【通过脚本启动】步骤拷贝到的项目路径...ExecStop=/etc/systemd/system/deploystop.sh PrivateTmp=true [Install] WantedBy=multi-user.target 执行命令服务开机启动...systemctl enable deploy.service 执行命令取消服务开机启动 systemctl disable deploy.service 执行命令查看服务状态 systemctl status

    1.4K40

    Linux开机启动(bootstrap)

    计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。...然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。...随后,内核会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工作,交接给init来管理。...在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误) 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts...这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络…… 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。

    11.2K80

    linux开机启动顺序

    LINUX 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。...(13 )执行proc_root_init()Wl数,对虚拟文件系统/proc进行初始化。   ...启动第八步--执行不同运行级别的脚本程序   根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。...如启动 3模式,会有个rc3。d目录,里面就保存着服务。其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动。数字表示启动顺序。 数字越小,启动越早。   ...所以,如果需要什么开机启动的话,可以写个脚本或命令到这里面来。就不用像上面那么麻烦。以后删除也方便。

    10.9K100

    Linux开机启动(bootstrap)

    作者:Vamei 来源:见文末 计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。...然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。...随后,内核会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工作,交接给init来管理。...在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误) 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts...这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络…… 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。

    8.9K50

    Linux设置开机启动

    开机启动 作者测试时,Linux版本为RedHat6,同时应用在CentOS6应该也可以(作者未实测,但有同事在CentOS6上使用可行),系统版本的不同,可能造成操作上的差异(CentOS7就与CentOS6...以下操作均在root权限下 解决服务器重启,比如断电,导致服务没有启动的烦恼 1.整理机器上面运行的服务,编些成sh脚本,文件为:/home/rc/exec.sh #加载环境变量 source /etc.../profile echo '环境变量添加成功' #启动web /usr/local/tomcat-web/restart.sh & echo 'tomcat-web 启动成功' 注意加载环境变量 2....执行 chmod 755 +脚本名字,命令: chmod 755 /home/rc/exec.sh 3.修改rc.load文件,vim /etc/rc.local touch /var/lock/subsys...如果没有生效,继续 6.查看启动系统的级别,命令: runlevel 这里是 N 3,代表启动级别为3 执行命令:ll /etc/rc3.d/ 正常情况,这里会有S99local -> ..

    10.6K20

    linux设置开机自启动

    linux设置开机自启动执行命令: 执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令 运行程序脚本:然后在文件最后一行添加要执行程序的全路径。.../hello.sh " 注意,你的命令应该添加在:exit 0 之前 image.png 在/etc/init.d目录下添加自启动脚本 linux在“/etc/rc.d/init.d”下有很多的文件...,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件 Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。...在下次开机启动的时候,proxy.py就会以root用户身份被自动运行。...把脚本注册为系统服务 在/etc/init.d下新建示例脚本文件(startTest.sh),该脚本会启动/opt/test.sh。内容如下: .

    21.4K40

    ubuntu-18.04开机启动脚本

    sudo service mysql start 现在用: sudo systemctl start mysqld.service 其实这个改动到不是算大,主要是开机启动比以前复杂多了。...执行 ls /lib/systemd/system 你可以看到有很多启动脚本,其中就有我们需要的 rc.local.service 打开脚本内容: # This file is part of systemd...[Unit] 段: 启动顺序与依赖关系 [Service] 段: 启动行为,如何启动,启动类型 [Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动 可以看出,/etc/rc.local...的启动顺序是在网络后面,但是显然它少了 Install 段,也就没有定义如何做到开机启动,所以显然这样配置是无效的。...Alias=rc-local.service 这里需要注意一下,ubuntu-18.04 默认是没有 /etc/rc.local 这个文件的,需要自己创建 下面整体说明怎么设置ubuntu-18.04开机启动脚本

    4.3K10

    Ubuntu18设置脚本开机启动

    当我搜索“如何在Ubuntu18设置脚本开机启动”,前N条的教程文章几乎都是在说同一个东西——rc.local,然而当我顺着教程一步步设置下来后发现遇到了无法启动的尴尬,如果大家用rc.local在systemctl...start无法启动时,不妨试试以下方法。...用Ubuntu18本身自带的systemd来设置开机启动脚本,并不需要像其它文章所说那么复杂,又是从/lib/systemd/system/rc.local.service 复制过来,再创建/etc/rc.local...1、准备好要运行的脚本vi ~/test.sh,输入以下内容,如果脚本里要运行其它程序,就用该程序完整的地址 #!...home/xxxx/test.sh [Install] WantedBy=multi-user.target 3、更改test.sh的权限 chmod 777 ~/test.sh 4、systemctl启动

    2.1K00
    领券