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 命令是服务器
保存数据后关机并重启

此方法最简单

 

posted @ 2019-03-26 16:30  浅笑安然Shunia  阅读(2502)  评论(0编辑  收藏  举报