Ubuntu16.04开机后文件执行顺序及开机自启详解(二)

二、Ubuntu自启动脚本搭建

首先了解一下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

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

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

开机自动运行程序

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

/etc/rc.local脚本是一个ubuntu16.04及其以前的系统中自带的开机脚本,该脚本通常是系统最后启动的,内容如下:
Ubuntu16.04开机后文件执行顺序及开机自启详解(二)_第1张图片
在exit 0 前面加上你想要执行的命令,即可开机启动。
还有一种方法,这里就不在叙述了,网上应该都能查到,这里就链接一下->[传送门]

登录时自动启动

用户登录时,bash先自动执行系统管理员建立的全局登录script:/etc/profile
(大多在此文件中设置环境变量,它是整个桌面环境使用的一个shell进程,也就是登录shell),然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:
/.bash_profile、
/.bash_login、
/.profile,
但只执行最先找到的一个。Ubuntu下一般前两个文件一般都没有,只有第三个文件。在该文件下添加想要执行的命令,即可在登录时执行。如下图:
Ubuntu16.04开机后文件执行顺序及开机自启详解(二)_第2张图片

退出登录时自动运行

退出登录时,bash自动执行退出登录脚本: /.bash_logout。
所以只需要修改~/bash_logout,该文件即可,在文件最后加上想要执行的命令
Ubuntu16.04开机后文件执行顺序及开机自启详解(二)_第3张图片

定期自动运行程序

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

例如,在 /var/spool/cron目录下建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontabcronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。

定时自动执行程序

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


上面大都是自动启动脚本,然而如果想开机启动应用程序,上面的方法好像都不太适合,我只试了前两种,出现了很多问题,网上查了好久,终于查到了解决方案。

开机自动执行应用程序

在/usr/share/applications/下面找到你要添加的应用程序.desktop文件,把它复制到home目录下的.config/autostart/目录下面,如果没有的话,新建一个autostart文件夹,复制进去,这样就OK了,图片如下:
Ubuntu16.04开机后文件执行顺序及开机自启详解(二)_第4张图片

上面的方法,仅限于该用户,如果切换用户,就不能自动运行应用程序了。如果需要所有的用户登录都能够自动执行,可以复制.desktop文件到/etc/xdg/autostart目录下即可,

还有一种方法:

在Ubuntu下,按Win键,搜索Startup Applications,
applications
点击进行添加即可,
Ubuntu16.04开机后文件执行顺序及开机自启详解(二)_第5张图片

你可能感兴趣的:(Ubuntu)