zoukankan      html  css  js  c++  java
  • Linux实现脚本开机自启动

    参考链接:https://blog.csdn.net/weixin_40343504/article/details/82457990

    Ubuntu系统实现脚本开机自启动

    0、序言

      很多时候,我们使用Linux时,为了方便操作,需要用到一些自启动的脚本,对于不同的Linux系统来说,自启动方式各有不同,我这里记录的是Ubuntu系统的;文章后面会补充参考链接的博客部分内容,仅供参考学习使用。该方法也可以用在移植系统时,把开机启动服务移植进去。

    1、建立开机启动服务

      跳转到 /etc/systemd/system 文件夹,移植系统时也是到你的文件系统的这个文件夹;

      新建开机启动服务 sudo vim my_start.service

      [Unit]
      
      #该文件是自己建立的启动服务文件,
      #/bin/my_start.sh 是你要启动的脚本所在的路径以及文件名,其他保持默认格式即可
     
      Description=/bin/my_start.sh Compatibility
      ConditionPathExists=/bin/my_start.sh
      
      [Service]
      Type=forking
     ExecStart=/bin/my_start.sh
     TimeoutSec=0
     StandardOutput=tty
     RemainAfterExit=yes
     SysVStartPriority=99
     
     [Install]
     WantedBy=multi-user.target

      给启动服务添加权限 sudo chmod 777 my_start.service

    2、创建要自启动的脚本

      因为我在第一步的启动服务里声明的启动脚本路径以及名称,所以建立的启动脚本名称路径要跟启动服务里声明的一致

           跳转到启动服务里声明的 /bin 目录,添加启动脚本 vim my_start.sh 

    #!/bin/sh
      
    #该文件为自定义开机启动脚本,可以用该脚本执行一些你需要开机启动的脚本
     
     PASSWORD="your_password" 

    #你如果做系统移植时,可以把 roo t的密码参数设置为 export,然后这里设置为
    PASSWORD=${ROOT_PASSWORD},就是直接提取你的 root 密码
    #具体你的系统保持密码的参数是什么要看你的移植的系统了,我的是 ROOT_PASSWORD

     echo ${PASSWORD} | sudo -S /bin/myStart/set_net_core.sh #echo ${PASSWORD} | sudo -S 是实现脚本自动把执行sudo命令时要输入的密码输入进去

    #我在这里的脚本实现的是:启动 /bin/myStart 文件夹里的 set_net_core.sh 脚本
    #这种方法的好处就是我只需要做一个启动服务专门用来执行一个脚本去执行其他脚本,这样后续还有新的需要开机自启动脚本就只需要把执行命令写入到这里即可

      给启动脚本添加权限 sudo chmod 777 my_start.sh

    3、启动脚本自启动服务

      跳转到 /etc/systemd/system 文件夹,其实不进入也行,我这里为了加深记忆才重新进入一次;

          执行指令 sudo systemctl enable my_start.service 启动脚本自启动服务,然后使用指令 reboot 重启你的系统;

      如果你是做系统移植需要用到的,你需要移植完系统,烧录后执行一次该指令,只需要执行一次即可,后续你断电关机重启都不用执行了

    以下内容转自参考链接,补充其他系统的部分

    一、CentOS系统和Redhat系统如下
      1.修改/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
    source /root/Desktop/start.sh         

      “sourece /root/Desktop/start.sh”为要添加开机自启动的脚本,并且要给“/root/Desktop/start.sh”赋予执行权限(chmod +x /root/Desktop/start.sh)
      2.chmod 777 rc.local
      3.重启系统后就会开始执行预设置执行的脚本。(此种自启动方式不会在GUI界面显示执行的具体进程)**

    二、Suse 系统如下
      1.suse15
        1)将需要开机启动脚本xxx.sh复制到 /etc/profile.d
          chmod 777 xxx.sh
        2)将系统改成root 自动登录
          vi /etc/sysconfig/displaymanager
          displaymanager-autologin=“root”

      备注:
        a.安装suse15系统参考:http://morecoder.com/article/1120393.html

         b.查看OS IP指令为“ip -4 address”
         c.远程连接请用putty,ssh 工具无法使用。

      2.Suse12

        1.修改/etc/init.d/下面有个boot.local为:

    #! /bin/sh
    #
    # Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.  All rights reserved.
    #
    # Author: Werner Fink, 1996
    #         Burchard Steinbild, 1996
    #
    # /etc/init.d/boot.local
    #
    # script with local commands to be executed from init on system startup
    #
    # Here you should add things, that should happen directly after booting
    # before we're going to the first run level.
    #
    source /root/Desktop/start.sh

        “sourece /root/Desktop/start.sh”为要添加开机自启动的脚本,并且要给“/root/Desktop/start.sh”赋予执行权限(chmod +x /root/Desktop/start.sh)
        2.重启系统后就会开始执行预设置执行的脚本。(此种自启动方式不会在GUI界面显示执行的具体进程)

    在Redhat Redflag centOS fc linux系统里面脚本的启动先后顺序
      第一步:通过/boot/vm进行启动 vmlinuz
      第二步:init /etc/inittab
      第三步:启动相应的脚本,并且打开终端
        rc.sysinit
        rc.d(里面的脚本)
        rc.local
      第四步:启动login登录界面 login
      第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的
        /etc/profile.d/file
        /etc/profile
        /etc/bashrc
        /root/.bashrc
        /root/.bash_profile
      Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令

  • 相关阅读:
    时间差的计算
    时间差的计算第二篇
    并不能完全不编码完成Windows Service的安装和卸载
    今年是搜索引擎年吗?热!搜索引擎算法点击率火爆
    Virtual PC,我真的不敢用你!
    我理解的17种C#写的Hello World程序
    反搜索引擎
    如何保证Windows Serverice健壮长效运转?
    服务器是怎么做成的?
    超酷的超级DataGrid
  • 原文地址:https://www.cnblogs.com/xingboy/p/15305027.html
Copyright © 2011-2022 走看看