• Ubuntu 系统详解 和 mysql 等软件开机自启动


    开机自启动:  系统开机自启动 和 软件开机自启动。(软件开机自启动是指随系统开机自启动的软件), 两者之间的关系:可类比 windows 系统开机自启动 和 随系统开机自启动的软件。

    详细参考“win7 系统 和 软件开机自启动之间的区别

    首先了解一下Ubuntu关于启动项的大致分类,每一类都分为系统级和用户级

    第一类upstart,或者叫job,由init管理,配置文件目录/etc/init,~/.init

    第二类叫service,由rc.d管理,配置文件目录/etc/init.d,以及/etc/rc.local文件   ---管理进程

    第三类叫cron,由contab管理,使用crontab进行配置  ---定期管理

    第四类叫startup,由xdg管理,配置文件目录/etc/xdg/autostart,以及~/.config/autostart

    运行命令:runlevel,可以查看自己系统的当前运行等级。

    upstart任务适用于runlevel<5的脚本和程序,service任务适用于runlevel<=5的任务,cron任务则不一定,而startup一般工作在runlevel=5,也就是桌面级。

    对于普通用户而言,你的桌面级应用应该使用startup,服务级应用(比如某些功能性的软件脚本)应该使用service,常规性配置可以使用cron,而与启动顺序有关的最好使用upstart。

    开机自动运行程序

    Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。

    /etc/rc.local脚本是一个ubuntu系统中自带的开机脚本,该脚本通常是系统最后启动的

    登录时自动启动

    用户登录时,bash先自动执行系统管理员建立的全局登录script:/etc/profile.d。

    退出登录时自动运行

    退出登录时,bash自动执行退出登录脚本: /.bash_logout。
    所以只需要修改~/bash_logout,该文件即可,在文件最后加上想要执行的命令

    定期自动运行程序

    Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。

    定时自动执行程序

    定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。

    Ubuntu开机后文件执行顺序,跟大多数的Linux系统一样,Ubuntu的开机顺序如下:

    1. 加载BIOS,读取MBR(Main Boot Record)主引导记录,启动Boot Manager(启动引导管理器)
    2. 加载系统内核,启动init进程,init进程是Linux的根进程,所有的系统进程都是它的子进程。在/etc 下有init和init.d两个文件夹,init文件夹内都是配置文件,init.d文件夹下都是可执行文件。
    3. 启动init进程,第一个运行的程序就是/sbin/init 该程序会读取/etc/inittab文件,但是在Ubuntu下,没有这个文件,取而代之的是 /etc/init/rc-sysinit.conf,主要作用就是设定Linux运行等级
    4. 首先执行/etc/rcS.d/ 目录下的启动脚本,然后是/etc/rc*.d/ 目录。这里的/etc/rc*.d文件夹的脚本文件的链接目标为:/etc/init.d文件夹下的相应脚本(* 为运行的级别,0-6级别。如果您的运行级别为5,则执行 rc5.d )  ,命令:runlevel,查看运行级别。
    5. 根据 /etc/rcS.d/文件夹中对应的脚本,启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
    6. 启动登录界面,等待用户登录。

    Ubuntu 设置系统环境变量和开机自启动

    详细查看博客原文:“开机自启动

    Ubuntu 开机自启动有4种方式实现,如下:

    1、 自动启动应用程序——rc.local脚本

    ① 在/etc/init.d/目录下创建脚本

    vi  /etc/init.d/nginx
    

    ② 更改脚本权限

    chmod 775 /etc/init.d/nginx
    

    ③ 编写脚本内容   

    #! /bin/sh
    set -e
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DESC="nginx daemon"
    NAME=nginx
    DAEMON=/usr/local/nginx/sbin/$NAME
    SCRIPTNAME=/etc/init.d/$NAME
    PIDFILE=/var/run/$NAME.pid
    
    # If the daemon file is not found, terminate the script.
    test -x $DAEMON || exit 0
    d_start() {
            $DAEMON || echo -n " already running"
    }
    d_stop() {
            kill -QUIT `cat $PIDFILE` || echo -n " not running"
    }
    d_reload() {
            kill -HUP `cat $PIDFILE`  || echo -n " could not reload"
    }
     
    case "$1" in
        start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
    reload)
    echo -n "Reloading $DESC configuration..."
    d_reload
    echo "reloaded."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    # Sleep for two seconds before starting again, this should give the
    # Nginx daemon some time to perform a graceful stop.
    sleep 2
    d_start
    echo "."
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
    exit 3
    ;;
    esac
    exit 0

    ④ 设置开机启动

    1、sysv-rc-conf是一个强大的服务管理程序

    1)运行:# sysv-rc-conf

      #sudo apt-get update

      #sudo apt-get install sysv-rc-conf    ---安装 sysv-rc-conf

    rc.local脚本是一个Ubuntu开机后会自动执行的脚本,在该脚本内添加命令行,开机时会自动执行。

    2) 将 nginx 脚本直接加入到系统自动启动列表中

    例如把 /etc/init.d/nginx 加入到系统自动 启动列表中:  

     运行命令:#sudo sysv-rc-conf nginx on   ---运行完这个命令,rc5.d 目录中会自动生成一个 S20nginx 的文件。

    2、 自动启动服务——update-rc.d

    直接改/etc/rc0.d ~ /etc/rc6.d和/etc/rcS.d下的东西,S开头的表示启动,K开头的表示不启动,例如:想关闭vsftpd的开机自动启动,只需sudo mv /etc/rc2.d/S20vsftpd   /etc/rc2.d/K20vsftpd  就可以了。 

    经查看,我们当前的启动级别是5,那么我们进入rc5.d目录,同时创建启动脚本,那么开机时就会自动启动该程序。不过普遍的我们都是在 /etc/init.d/ 目录下创建该脚本,然后通过软链接到rcN.d目录下。

    3、 启动应用程序首选项
    4、 使用Systemd

    5. 将启动脚本 .sh 文件,放入 rc*.local 文件中

    如 

    查看系统安装并运行jdk 的路径 :运行Linux: java -verbose
    JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  --运行jdk的路径
    
    JAVA_BIN=$JAVA_HOME/bin
    
    JRE_HOME=$JAVA_HOME/jre
    
    JRE_BIN=$JRE_HOME/bin
    
    PATH=$JAVA_BIN:$JRE_BIN:$PATH
    
    export JAVA_HOME JRE_HOME PATH  
    
    sh /usr/local/tomcat1-8080/bin/startup.sh
    sh /usr/local/tomcat2-8081/bin/startup.sh

    最后,重启服务器进行测试,执行命令:reboot -n。reboot -n 命令是服务器
    保存数据后关机并重启

    此方法最简单

  • 相关阅读:
    Huffman树与编码
    Python引用复制,参数传递,弱引用与垃圾回收
    Git使用说明
    numpy使用指南
    Python Socket
    温故知新之 数据库的事务、隔离级别、锁
    Oracle数据库的语句级读一致性
    VirtualBox NAT方式与主机互相通信
    Linux的定时任务
    Redis学习
  • 原文地址:https://www.cnblogs.com/Shunia123/p/10601047.html
Copyright © 2020-2023  润新知