精华内容
下载资源
问答
  • linux开机自启动

    2019-10-09 06:02:29
    linux下添加简单的开机自启动脚本 在linux的使用过程中,我们经常会碰到需要将某个自定义的应用程序设置为开机自启动以节省操作时间,这里提供两个设置开机自启动的方法。 注:博主使用的ubuntu-16.04进行实验,其它...

    linux下添加简单的开机自启动脚本

    在linux的使用过程中,我们经常会碰到需要将某个自定义的应用程序设置为开机自启动以节省操作时间,这里提供两个设置开机自启动的方法。

    注:博主使用的ubuntu-16.04进行实验,其它版本可能有偏差,但实现原理类似。

    rc.local

    在rc.local脚本中添加开机自启动程序

    ubuntu在开机过程之后,会执行/etc/rc.local(注意/etc/init.d中也有个rc.local,不要弄混了)文件中的脚本程序,初始情况下,这个文件内容是这样的:

    downey@ubuntu:~$ cat /etc/rc.local
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.  

    并不包含其它内容,用户可以在里面添加需要开机执行的脚本命令,这里以diodon粘贴板工具为例,如果我要开机运行diodon进程,在文本中添加:

    downey@ubuntu:~$ cat /etc/rc.local
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    ./usr/bin/diodon &
    exit 0

    看到这里有些盆友就要问了,为什么要在执行命令后面加&?

    在shell执行命令后加&是为了让应用程序在后台运行,rc.local也是一个脚本,主进程在运行这个脚本时必须能够返回,如果在这个脚本里面执行了一些死循环或者其他无法返回的任务,整个系统就很可能卡死在这里,无法启动,所以在这里运行的用户程序必须是能够返回或者本身就使用一些后台运行的进程。

    经过上面的添加,在下次重启的时候,使用命令:

    downey@ubuntu:~$ ps -ef |grep "diodon"
    downey     2097   1880  0 22:53 ?        00:00:04 diodon
    downey     2937   2842  0 23:27 pts/2    00:00:00 grep --color=auto diodon  

    就可以看到diodon进程已经在后台运行。

    删除

    既然有添加,就必须得有删除,其实以rc.local的删除方式很简单,直接删除rc.local中用户添加的部分即可。

    需要提醒的是,在操作系统文件时,做备份是非常必要的

    将用户脚本添加到/etc/init.d中

    添加用户进程

    第二种方式就是将自己的用户脚本添加到/etc/init.d并链接到自启动程序当中。

    还是以diodon软件来举例,我编辑一个运行diodon的脚本:

    #!/bin/bash
    ./usr/bin/diodon  

    将其命名为diodon.sh,并用指令:

    chmod +x diodon.sh
    sudo cp diodon.sh /etc/init.d/  

    将文件放到/etc/init.d目录中,然后将diodon,sh脚本链接到开机运行序列中:

    cd /etc/init.d
    sudo update-rc.d diodon.sh defaults 96
    insserv: warning: script 'diodon' missing LSB tags and overrides  

    这样重新启动时,就可以看到diodon.sh正在运行了。
    sudo update-rc.d diodon.sh defaults 96
    在这条指令中,update-rc.d是一个系统的链接工具。

    defaults 96则是指定了脚本的开机顺序,数字为0-99,数字越大执行优先级越低,用户添加的程序最好选择低优先级的执行顺序,因为很可能我们的用户程序会依赖一些系统的应用进程,例如如果应用程序要使用到网络部分,就先得让网络后台程序先初始化完毕。

    看到这里,细心的朋友已经发现了,在链接脚本时有一个警告:

    insserv: warning: script 'diodon' missing LSB tags and overrides  

    作为一个菜鸟而言,是不敢忽视任何警告的,所以只好求助google,解决办法是在自己的脚本中的#!/bin/bash下添加:

    ### BEGIN INIT INFO
    # Provides:          downey
    # Required-Start:    $local_fs $network
    # Required-Stop:     $local_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: tomcat service
    # Description:       tomcat service daemon
    ### END INIT INFO  

    添加这些的目的是告诉系统一些关于这个启动脚本的具体信息,其中比较重要的有这几项:

    # Required-Start:   运行这个脚本需要的环境
    # Required-Start:   停止这个脚本需要的环境
    # Default-Start:    提供运行的运行级别
    # Default-Stop:     不运行的运行级别
    # Description:      描述

    关于linux下的运行级别参考:linux运行级别

    删除用户进程

    既然有添加就必然有删除,如果需要删除自定义开机运行脚本,输入:

    sudo update-rc.d -f diodon remove

    systemd的开机自启动

    上面提到的两种方式适用于经典的system V控制系统启动和关闭的情况,但是目前(2018年10月)在大多数发行版上都开始使用了systemd的系统软件控制方式,包括Ubuntu16,centos.systemd系统管理着linux下的进程运行,属于应用程序,不属于linux内核的范畴。

    在systemd系统上设置开机自启动的方式也是非常简单的(尽管systemd这套软件管理工具并不简单)。

    确定系统是否应用了systemd工具来管理

    这里要注意的是,systemd是linux发行版上的预装工具,用来管理系统软件的启动运行和结束,所以通常来说,这套东西是依赖于发行版的,如果系统使用了这一套工具,那么就可以使用它来管理进程,如果不是,即使你安装了它,它也不会被默认配置为系统管理工具。

    查看系统是否使用systemd工具我们可以使用如下的指令:

    systemd --version

    如果系统返回如下类似的信息,表明该系统是由systemd工具来管理软件:

    systemd 232
    +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN

    systemctl的使用

    对软件的管理主要是同通过systemd工具中的systemctl命令,相比于之前的system V的控制方式,systemd显得更加简洁明了,对用户更加友好,拿httpd来举例:

    开启httpd服务:
    sudo systemctl start httpd
    设置httpd服务自启动:
    sudo systemctl enable httpd

    至于关闭和取消自启动,大家心里应该有数了吧。

    设置开机自启动

    我们再回到重点,设置开机自启动。

    我们要为目标设置一个配置文件,其实这是可以预想到的,linux作为一个复杂的系统,开机自启动涉及到的依赖、运行级别、运行环境等等问题肯定需要用户去指定,在启动的时候系统才知道怎么正确地去运行软件。这个配置文件固定以.service作为后缀,比如我们如果要运行/home/downey目录下的test.sh脚本,我们可以添加一个配置文件test.service:

    [Unit]
    Description=
    Documentation=
    After=network.target
    Wants=
    Requires=
    
    [Service]
    ExecStart=/home/downey/test.sh
    ExecStop=
    ExecReload=/home/downey/test.sh
    Type=simple
    
    [Install]
    WantedBy=multi-user.target

    将文件放在/usr/lib/systemd/system 或者 /etc/systemd/system目录下,然后可以测试一下:

    sudo systemctl start test.service  

    然后你可以查看你的/home/downey/test.sh脚本是否已经运行,如果已经运行表示配置文件没有问题。然后可以键入:

    sudo systemctl enable test.service  

    设置test脚本开机启动。如果上一步没有出问题,这一步基本上也不会有什么问题,系统会打印出如下信息:

    Created symlink /etc/systemd/system/multi-user.target.wants/test.service → /usr/lib/systemd/system/test.service.  

    可以看到,这里在/etc/systemd/system/multi-user.target.wants/目录下创建了一个/usr/lib/systemd/system/test.service文件的软链接,到这里设置开机自启动就完成了。

    配置文件的简单解析

    在上面的配置文件中,为了演示起见,我将一些本测试脚本不需要但是比较重要的配置项也写了出来,其实如果不需要可以删除,但是[Unit]/[Service]/[Install]这三个标签需要保留。
    我们来一个个简单介绍一下配置项:

    Description:运行软件描述
    Documentation:软件的文档
    After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
    Wants:弱依赖于某个服务,目标服务的运行状态可以影响到本软件但不会决定本软件运行状态
    Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
    ExecStart:执行命令
    ExecStop:停止执行命令
    ExecReload:重启时的命令
    Type:软件运行方式,默认为simple
    WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解。  

    如果有多项,用逗号作为分隔。

    好了,关于linux开机自启动脚本就到此为止啦,如果朋友们对于这个有什么疑问或者发现有文章中有什么错误,欢迎留言

    原创博客,转载请注明出处!

    祝各位早日实现项目丛中过,bug不沾身.

    转载于:https://www.cnblogs.com/downey-blog/p/10473939.html

    展开全文
  • Linux开机自启动

    2020-09-22 13:48:00
    配置我们需要开机启动的服务 chmod +x 、/etc/rc.d/rc.loca 编辑自动运行的脚本 vi /etc/rc.d/rc.loca 加入以下几行 source /etc/profile /usr/local/zookeeper/bin/zkServer.sh start /usr/local/tomcat/bin/...

    配置我们需要开机启动的服务

    chmod +x  /etc/rc.d/rc.local
    

    编辑自动运行的脚本

    vi /etc/rc.d/rc.local
    

    加入以下几行

    source /etc/profile
    /usr/local/zookeeper/bin/zkServer.sh start
    /usr/local/tomcat/bin/startup.sh 
    

    分别为路径

    展开全文
  • 在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都... Linux开机自动启动脚本放在哪...

    在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都手动操作,是很繁琐的事情。我们可以采用随系统一起启动MySQL服务,这样就解决了频繁手动启动MySQL的问题。

    要实现随开启自动启动mysqld,我们需要搞定如下几个问题:

    1. Linux开机自动启动脚本放在哪儿?

    一般的,作为服务器使用的Linux一般会以“完全多用户模式(Multi-User Mode with Networking)”级别来启动,这种情况下Linux在启动时会运行/etc/rc.d/rc3.d/下的全部脚本。例如我们在这个目录下会看到脚本”/etc/rc.d/rc3.d/S90crond”,意味着开机启动时会运行S90crond脚本。

    2. Linux如何运行这些脚本?

    既然已经知道自动启动脚本该放在哪儿了,一切就好办。我们只需要将一个启动MySQL的脚本放过去就好了。下面是我们的一个简单的启动脚本v0.1 mysqldauto

    $vi mysqldauto

    #!/bin/sh

    # Version: 0.1 by orczhou@gmail.com

    /opt/mysql/bin/mysqld_safe --user=mysql & #这里需要修改为你的mysqld_safe目录

    $chmod +x mysqldauto

    $mv mysqldauto /etc/rc.d/init.d/

    $ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc3.d/S99mysqld

    这样我们就把创建的mysqldauto脚本放到了/etc/rc.d/rc3.d/下面(注意这里使用了link的方式),mysqld可以自动启动了。

    这有两个问题需要解释:

    * * * * * 为什么不直接在目录/etc/rc.d/rc3.d/下创建文件,而要创建一个软连接?这并不是必须的。但是这样做是有很多好处的(后面会解释),不过这样做至少会看起来更加专业。

    * * * * * 为什么文件名要用S99mysqld?这是规则,在rc3.d下面的脚本如果以字母S开头,那么执行时Linux会给它传递一个start参数(如果以字母K开头,则会传递stop参数);S后面接个数字,表示了这个脚本的启动顺序,如果目录rc3.d下还有S98*那么它会在S99之前运行。(看到这儿,你可以猜测一下前面我们为什么要创建软连接了)

    好了,自此你的mysqld就已经可以随Linux开机自动启动了。

    3. 怎样做更专业些?

    上面这样做,已经可以解决问题了,不过写法多少有些“山寨”,下面我们看看怎样改造一下。

    * * * * * 改造1:处理参数start。既然前面提到以字母S开头的脚本会自动传递一个参数start,K则会传递stop。那么我再做如下修改:

    $vi mysqldauto

    #!/bin/sh

    # Version: 0.2 by orczhou@gmail.com

    MYSQLHOME=/opt/mysql #这里需要修改为你的mysql安装目录

    if [ $# -ge 1 ];then

    mysqldProc=`ps -ef|grep -E "mysqld.+safe"|grep -v "grep"|wc -l`

    if [ $1 = "stop" ] ;then

    if [ $mysqldProc -eq 1 ];then

    $MYSQLHOME/bin/mysqladmin -uroot shutdown

    fi

    elif [ $1 = "start" ];then

    if [ $mysqldProc -eq 0 ];then

    $MYSQLHOME/bin/mysqld_safe --user=mysql &

    fi

    fi

    fi

    做了如此改造后,我们脚本需要接收两个参数start stop了。如果你想让你mysqld在关闭主机的时候自动关闭,那么stop参数就可以起作用了:

    $ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc0.d/K20mysqld

    这里做软连接好处就体现出来了,启动和关闭只需要用一个脚本就可以了。

    * * * * * 改造2:当你面临几十上百台主机的时候,MySQL的启动参数可能会不一样,例如备库启动时可能需要mysqld_safe –user=mysql –read_olny=1 &,这种情况怎么办呢?这里提供一个解决思路。

    在主机上运行一个脚本,探测当前mysqld的启动参数,然后写到一个指定的文件里。最后,在你的启动脚本中,读取这个文件里面的启动参数来启动mysqld。It works。

    展开全文
  • Linux 开机自启动

    2016-12-28 14:05:40
    1.查看是否启动 2. 设置自动启动1.【查看是否启动】 启动SSH服务 “/etc/init.d/...2.【设置自动启动】 如何设置把ssh等一些服务随系统开机自动启动? 方法一:[root@localhost ~]# vi /etc/rc.local  加入:ser
      1.查看是否启动
    
      2. 设置自动启动
    
    
    
    1.【查看是否启动】
    
      启动SSH服务 “/etc/init.d/sshd start”。然后用netstat -antulp | grep ssh看是否能看到相关信息就可以了。
    
    2.【设置自动启动】
    
      如何设置把ssh等一些服务随系统开机自动启动?
    
         方法一:[root@localhost ~]# vi /etc/rc.local
          加入:service sshd start 或  /etc/init.d/sshd start
    
      方法二:进入/etc/rc.d然后进入相应运行
          级别如rc3.d.将K打头的ssh服务改为S开头的
    展开全文
  • linux 开机自动启动

    2018-12-10 10:27:26
    如果文件存在直接在 exit 0 前面加启动命令,如果文件不存在,新建一个,粘贴以下内容,在 exit 0 前面加启动命令 #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. ...
  • linux 开机自启动

    2016-11-02 15:21:40
    vim /etc/rc.local 把命令行启动程序写进去。
  • linux开机自动启动

    2013-09-29 23:10:08
    linux有自己一套完整的启动 体系,抓住了linux启动 的脉络,linux启动 过程将不再神秘。 阅读之前建议先看一下附图。 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d...
  • 在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都... Linux开机自动启动脚本放在哪...
  • 主要介绍了linux 开机自启动redis服务的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Linux开机自启动总结:在作为服务器使用的Linux(Cent OS)系统中,开机自动启动若干服务是常见的。我们使用的指令是chkconfig,通过它将我们自定义的封装了各种服务的sh脚本添加到开机启动项,并设置该脚本的运行级别...
  • Linux开机自启动总结:在作为服务器使用的Linux(Cent OS)系统中,开机自动启动若干服务是常见的。我们使用的指令是chkconfig,通过它将我们自定义的封装了各种服务的sh脚本添加到开机启动项,并设置该脚本的运行级别...
  • linux 开机自启动设置

    2020-09-09 09:13:09
    linux 开机自启动设置 修改 /etc/rc.local脚本: vi /etc/rc.local 直接在文件的末尾加入启动脚本
  • 那我们可以通过在/etc/init.d目录下创建开机启动的脚本来调用我们想设置参数的脚本和启动服务的脚本来达到开机自启动的目的。当然,如果你要一开机就关闭某个服务或参数也是可以把相应的脚本放进去来达到开机自关闭...
  • 在/etc/rc.local文件中添加自启动命令(其中一种方法)1.案例,就用博主本人之前发的博文 “nginx + flask + uwsgi + centos + python3 搭建web项目”,把步骤6的语句添加到/etc/rc.local文件中----------------------...
  • linux 开机自启动执行脚本 https://www.linuxprobe.com/linux-open-sh.html
  • linux开机自动启动脚本

    千次阅读 2016-02-25 20:44:01
    linux开机自启动脚本
  • 学员要求:学习计算机最为基础的内容(开关机、安装软件)课程声明:本课程设计目的只用于教学,帮助更多人学习安全技能 ,切勿使用课程中的技术进行违法活动,学员利用课程中的技术造成的后果与讲师本人无关,倡导...
  • Linux 开机自启动多个脚本程序

    千次阅读 2020-03-02 17:14:48
    Linux 开机自启动程序
  • linux开机自启动程序

    2016-11-19 16:03:36
    linux开机自启动程序Ubuntu自动启动程序Linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(要以root的身份才能打开)。
  • http://os.51cto.com/art/200911/165656.htm在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似...
  • Linux配置开机自启动执行脚本的方法有很多,这里分享两种方法,分别是修改/etc/rc.local方法和chkconfig管理设置的方法,均可实现Linux配置开机自启动执行脚本的功能!设置test.sh为开机要启动的脚本[root@oldboy ...
  • 本节主要讲解一下Linux开机自启动SVN,上节我们讲解了Windows下开机自动启动SVN服务,通过本节的介绍你可以做一个对比,看一下在两种操作系统中开机自动启动SVN服务的区别,希望本节对你学习有所帮助。在Redhat ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,981
精华内容 3,592
关键字:

linux开机自启动

linux 订阅