linux 编辑自启动_linux 启动编辑模式 - CSDN
  • 在解问题之前先来看看Linux启动流程Linux启动流程主要顺序就是: 1. 加载内核 2. 启动初始化进程 3. 确定运行级别 4. 加载开机启动程序 5. 用户登录启动流程的具体细节可以看看Linux启动流程 第4...

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务。

    在解问题之前先来看看Linux的启动流程

    Linux的启动流程

    Linux启动顺序

    主要顺序就是:
    1. 加载内核
    2. 启动初始化进程
    3. 确定运行级别
    4. 加载开机启动程序
    5. 用户登录

    启动流程的具体细节可以看看Linux 的启动流程

    第4步加载启动程序其实是两步:

    1. init进程逐一加载开机启动程序,其实就是运行指定目录里的启动脚本。
    2. 在运行完指定目录里面的程序后init进程还会去执行/etc/rc.local 这个脚本。

    ps:“指定目录”是指在第3步中设置的运行级别对应的目录。

    要完成我们的需求,我们使用第4步中的任意一种方式都可以。

    下面分别就是这两种方式的具体实现:

    1.chkconfig

    supervisord服务脚本为例:

    #!/bin/sh
    ##
    ## /etc/rc.d/init.d/supervisord
    ##
    #supervisor is a client/server system that
    # allows its users to monitor and control a
    # number of processes on UNIX-like operating
    # systems.
    #
    # chkconfig: - 64 36
    # description: Supervisor Server
    # processname: supervisord
    
    # Source init functions
    . /etc/rc.d/init.d/functions
    
    prog="supervisord"
    prefix="/usr/"
    exec_prefix="${prefix}"
    PIDFILE="/var/run/supervisord.pid"
    CONFIG="/etc/supervisord.conf"
    prog_bin="${exec_prefix}bin/supervisord -c $CONFIG "
    
    function log_success_msg() {
            echo "$@" "[ OK ]"
    }
    
    function log_failure_msg() {
            echo "$@" "[ OK ]"
    }
    
    start()
    {
           #echo -n $"Starting $prog: "
           #daemon $prog_bin --pidfile $PIDFILE
           #[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog failed"
           #echo
            if [ ! -r $CONFIG ]; then
                    log_failure_msg "config file doesn't exist (or you don't have permission to view)"
                    exit 4
            fi
    
            if [ -e $PIDFILE ]; then
                    PID="$(pgrep -f $PIDFILE)"
                    if test -n "$PID" && kill -0 "$PID" &>/dev/null; then
                            # If the status is SUCCESS then don't need to start again.
                            log_failure_msg "$NAME process is running"
                            exit 0
                    fi
            fi
    
            log_success_msg "Starting the process" "$prog"
            daemon $prog_bin --pidfile $PIDFILE
            log_success_msg "$prog process was started"
    
    }
    stop()
    {
           echo -n $"Shutting down $prog: "
           [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
           echo
    }
    
    case "$1" in
    
     start)
       start
     ;;
    
     stop)
       stop
     ;;
    
     status)
           status $prog
     ;;
    
     restart)
       stop
       start
     ;;
    
     *)
       echo "Usage: $0 {start|stop|restart|status}"
     ;;
    
    esac

    第1步:把上面的脚本放在/etc/init.d/文件夹下。

    ln -s ./supervisord  /etc/init.d/supervisord

    第2步:将启动脚本权限改为可执行。

    chmod a+x /etc/init.d/supervisord

    第3步:添加启动项。

    chkconfig --add supervisord
    chkconfig supervisord on

    第4步:检查是否设置成功。

    chkconfig --list | grep supervisord
    supervisord     0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

    成功~

    2.修改/etc/rc.local脚本

    /etc/rc.local 脚本内容如下

    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    
    #touch /var/lock/subsys/local
    echo "hello linux" >> /tmp/hello2.log
    
    influxd > /tmp/influxd.log 2>&1 &
    
    echo "hello linux" >> /tmp/hello3.log

    echo “hello linux” >>/tmp/hello2.log ,就模拟了一个简单的开机启动脚本。

    influxd 则就是启动 influxd 服务。

    ps: influxd > /tmp/influxd.log 2>&1 & 这样写的意思是让influxd后台执行。

    influxd和前面的echo "hello linux"是不一样的,echo 执行过后就结束了,而influxd则为服务一直执行,如果不后台执行的话则influxd 启动后就不会返回,那么init进程就会一直等待influxd执行完毕,导致后面的程序一直无法执行。

    这个着实坑了我一把,当时我写的是:

    #!/usr/bin/python
    ...
    influxd
    telegraf

    发现influxd启动成功了,telegraf就是起不来。后来把telegraf写在前面就能起来,但是influxd又起不来了于是就猜测是这个原因~~~bingo。

    展开全文
  • 嵌入式 linux 设置自启动 例如:添加开机自启动程序climb.out 其中climb.out必须要在系统中的模块都初始化之后才能正常执行 使用延时的方法,等待其他部分初始化完成,暂时没有找到更好的办法。。。。。。。。 ...

    嵌入式 linux 设置自启动

    例如:添加开机自启动程序climb.out

    其中climb.out必须要在系统中的模块都初始化之后才能正常执行
    使用延时的方法,等待其他部分初始化完成,暂时没有找到更好的办法。。。。。。。。

    1、在/home/root/下创建mountain.sh(可以是任意目录)

    命令:vi mountain.sh

    输入(字母“i”开始编辑)

    
     #!/bin/sh
    
    sleep 30
    
    cd /home/root
    
    ./climb.out 

    (完成编辑,esc -> :wq! -> 回车)

    2、设置mountain.sh的权限

    chmod 777 mountain.sh

    3、在目录/etc/init.d中的rc文件中的最后添加

    跳转到/etc/init.d :cd /etc/init.d

    编辑rc文件 :vi rc

    在最后添加

    
    cd /home/root/
    
    ./mountain.sh &

    (完成编辑,esc -> :wq! -> 回车)

    展开全文
  • Linux下Tomcat开机自动启动 Linux下tomcat开机自动启动有两种方法,一种是使用shell脚本要实现,另一种是修改系统文件的方式实现。     通过shell脚本实现 在linux中设置开机自动启动的服务,需要在/etc/init....

    Linux下Tomcat开机自动启动

    Linux下tomcat开机自动启动有两种方法,一种是使用shell脚本要实现,另一种是修改系统文件的方式实现。

     

     

    1. 通过shell脚本实现

    在linux中设置开机自动启动的服务,需要在/etc/init.d下写启动的脚本,还要在/etc/rcX.d下挂载。

     

    第一步:用root权限连接上服务器

    第二步:在/etc/init.d路径下新建一个文件(这里以tomcat为例)

             vi /etc/init.d/tomcat

    按i进入脚本编辑,开始写tomcat开机自动启动脚本;

     

    #!/bin/sh

    # chkconfig: 2345 80 90

    # description: Auto-starts tomcat

    # /etc/init.d/tomcatd

    # Tomcat auto-start

    # Source function library.

    #. /etc/init.d/functions

    # source networking configuration.

    #. /etc/sysconfig/network

    RETVAL=0

    export JAVA_HOME=/usr/local/jdk1.8.0_91

    export JRE_HOME=/usr/local/jdk1.8.0_91/jre

    export CATALINA_HOME=/root/apache-tomcat-8.0.39

    export CATALINA_BASE=/root/apache-tomcat-8.0.39

    start()

    {

            if [ -f $CATALINA_HOME/bin/startup.sh ];

              then

                echo $"Starting Tomcat"

                    $CATALINA_HOME/bin/startup.sh

                RETVAL=$?

                echo " OK"

                return $RETVAL

            fi

    }

    stop()

    {

            if [ -f $CATALINA_HOME/bin/shutdown.sh ];

              then

                echo $"Stopping Tomcat"

                    $CATALINA_HOME/bin/shutdown.sh

                RETVAL=$?

                sleep 1

                ps -fwwu root | grep tomcat|grep -v grep | grep -v PID | awk '{print $2}'|xargs kill -9

                echo " OK"

                # [ $RETVAL -eq 0 ] && rm -f /var/lock/...

                return $RETVAL

            fi

    }

     

    case "$1" in

     start)

            start

            ;;

     stop)  

            stop

            ;;

                                                    

     restart)

             echo $"Restaring Tomcat"

             $0 stop

             sleep 1

             $0 start

             ;;

     *)

            echo $"Usage: $0 {start|stop|restart}"

            exit 1

            ;;

    esac

    exit $RETVAL

     

     

    需要注意的是:

    #chkconfig: 2345 80 90  2345代表设置是在rc2.d-rc5.d中开启的,rc后面的数字代表开机启动时不同的运行级别,后面的 80和90分别代表S和K的默认执行序号,如要在rcX.d目录下链接多个脚本,每个脚本的执行序号应该是唯一的。

    # description: Auto-starts tomcat   这一行代码和上一行代码也是缺一不可的,如果缺少,后面在通过chkconfig --add tomcat添加服务的时候会出现 tomcat 服务不支持 chkconfig的错误 。

    JAVA_HOME 代表jdk的安装路径。

    CATALINA_HOME代表tomcat的安装路径。

     

    第三步:保存tomcat文件退出后,给此文件添加可执行权限

            Chmod +x /etc/init.d/tomcat

    第四步:挂载

            将这个shell文件连接到/etc/rc2.d/目录下,rcX.d目录下的命名规则是,根据开始还是关闭决定以S开头还是K开头,之后的数字代表启动顺序。

    ln -s /etc/init.d/tomcat /etc/rc2.d/S80tomcat

     

    第五步:添加脚本开机启动服务

    chkconfig --add tomcat

    用chkconfig --list查看服务是否添加成功。

    第六步:重启验证

    sudo reboot

    2、修改系统配置文件的方式实现

    第一步:修改/etc/rc.d/rc.local   

    vi /etc/rc.d/rc.local

     

    第二步:在文件最后加上两行脚本

              export JAVA_HOME=/usr/local/jdk1.8.0_91

              /root/apache-tomcat-8.0.39/bin/startup.sh start

    第三步:给rc.local文件添加执行权限

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

    第四步:重启验证

               sudo reboot

     

     

     

    注意:1、在/etc/init.d/目录下创建文件的时候,注意/etc/目录下是否有与之同名的文件或者目录,如果有,最好修改要创建的文件的文件名

          2、第一种方法和第二种方法只需采用一种即可。

          

     

     

     

     

     

     

    展开全文
  • linux 程序自动启动

    2007-08-27 09:18:00
    在Red Hat Linux中自动运行程序1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc...
    在Red Hat Linux中自动运行程序
    1.开机启动时自动运行程序
      Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。

      2.登录时自动运行程序
      用户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
      因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。

      3.退出登录时自动运行程序
      退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。

      4.定期自动运行程序
      Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
      例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。

      5.定时自动运行程序一次
      定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:

      $ at 12:00
      at>mailto Roger -s ″Have a lunch″ < plan.txt
      at>Ctr-D
      Job 1 at 2000-11-09 12:00

      2000-11-09 12:00时候自动发一标题为"Have a lunch",内容为plan.txt文件内容的邮件给Roger。 
    展开全文
  • Linux下设置ORACLE自启动 网上的很多帖子讲的很不全面 所以写出自己实现自启动的过程 只要你按照过程操作 一定可以实现 查看ORACLE_HOME是否设置 [root@conn /]#echo $ORACLE_HOME /u01/oracle/product/...
  • Linux开机自启动总结

    2016-04-19 11:07:12
    在作为服务器使用的Linux(Cent OS)系统中,开机自动启动若干服务是常见的。我们使用的指令是chkconfig,通过它将我们自定义的封装了各种服务的sh脚本添加到开机启动项,并设置该脚本的运行级别,启动顺序及停止顺序...
  • 2. 编辑启动文件 3. 给启动文件添加权限 4. 设置软连接 1. 基础说明 将程序设置为开机启动的方法不止一种,这里记录的,应该是最常用的一种。 root用户执行命令:ll /etc/rc.d/ 可以看到有下面这些文件: ...
  • linux设置自启动程序

    2010-07-02 15:02:00
    Ubuntu 系统下自启动选项的设置方法Ubuntu , 系统 , 选项 , 设置 这里说明,Ubuntu 中系统 没有了RH系统中的 chkconfig 命令 ! <br /> 可用一些小工具 来管理 Ubuntu 的启动选项: ...
  • 【导读】 Linux系统在启动的过程中,会先启动内核,...所以通过编辑该文件可以实现自启动的功能。 具体操作 该文件存放于根目录下的 /etc/ 文件夹中,通过编辑该文件,在文件中 exit 0 语句的前面加入执行语句,...
  •  windows系统在“开始”——〉“所有程序”——〉“启动”里面放个快捷方式就行,那Linux下呢?   这也是一个比较简单的问题,有不少的方法可以解决,这里介绍三种方法。因为是简单介绍,所以具体细节不是很详细,...
  • 每次开机后都要用 ifup eth0 命令 启动网卡,想着怎么可以开机自动启动网卡,于是就法百度了一下,方法如下: 方法一: 编辑网卡配置文件 ...编辑开机自启动文件  vi /etc/rc.d/rc.local 添加 ...
  • 1.需求分析 ...今天笔者就如何编写自启动shell脚本减少程序员开启服务器后的环境开启工作; 2.配置环境 linux版本:centos-6.3 jdk:1.8 tomcat: 9.0 3.实现方案 ①抒写脚本 #!/bin/sh #chkconfig: 2345 80
  • Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤。 加载内核 ...
  • 自己的linux每次开机都要启动tomcat,网上好多都是用shell脚本来实现tomcat开机自启动,后来看到一种方法,直接修改系统文件来实现,已经实践过,方法有效。然后实验总结出,其实其他的比如redis和nginx也是可以这样...
  • 编辑 /etc/oratab 文件 修改其中的路径,并且将最后的 “N” 改为 “Y”,如下: orcl:/home/oracle/app/oracle/product/12.2.0/dbhome_1:Y 创建/修改 /etc/systemd/system/oracle-rdbms.service 文件 文件...
  • 1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的...
  • 很多时候,我们想要给系统添加一个开机自动启动的脚本,用来解决一些问题,比如snmp服务,tomcat服务等。 这个时候,我们可以自己手动写一个启动脚本,并且添加到开机自动启动项目里面。这样子每次开机就可以自动...
  • 开机自启动Tomcat:1.修改脚本文件vi /etc/rc.d/rc.local2.添加如下内容: export JAVA_HOME=/usr/local/java/jdk1.8.0_171 /usr/local/apache-tomcat-8.5.32/bin/startup.sh start3.esc 退出编辑,:wq 保存修改4....
  • 写一个脚本minioSysInit.sh(名字随意) # !/bin/bash /root/minio server /data ...授予脚本执行权限 ...chmod +x /home/eye_v2/minioSysInit.sh ...# 开机自启动Minio,此处修改为脚本位置 /home/minioSysInit....
  • 自启动脚本为auto.py 用root权限编辑以下文件 sudo vim /etc/rc.local 在exit 0上面编辑启动脚本的命令 /usr/bin/python3 /home/edgar/auto.py > /home/edgar/auto.log 最后重启Linux,脚本就能自动运行并打印...
1 2 3 4 5 ... 20
收藏数 234,271
精华内容 93,708
关键字:

linux 编辑自启动