本帖最后由 java 于 2018-1-4 09:48 编辑
前言
此页面简单介绍Linux下自启动程序的设置与管理.
图形管理
打开启动器,右键选中需要开机启动的程序——添加至开机启动项
配置文件管理
开机启动时自动运行程序
Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。
init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置
/etc/rc
/etc/rc.d
/etc/rc?.d
目录下的脚本文件,可以使init自动启动其它程序。例如:编辑/etc/rc.local 文件(该文件通常是系统最后启动的脚本),在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。
使用systemd执行rc.local
在使用了systemd作为启动器的系统(如较新版的deepin)中,默认不包含rc.local文件。此时请在/etc目录下以管理员权限创建一个名为rc.local的纯文本文件,并写入如下内容:
#!/bin/bash
# rc.local config file created by use
把你需要执行的命令写在这里
exit 0
保存后,赋予该文件可执行权限:sudo chmod +x /etc/rc.local。下次重启时,systemd就会自动执行rc.local里面的命令了
在~/.config/autostart目录下添加自启动命令
以代理工具 XX-Net 为例,假定其启动脚本位于~/Documents/XX-Net-3.3.1/start。在 ~/.config/autostart 目录下添加 XX-Net.desktop 文件,其内容如下:
[Desktop Entry]
Type=Application
Exec="~/Documents/XX-Net-3.3.1/start"
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_IN]=XX-Net
Name=XX-Net
Comment[en_IN]=XX-Net
Comment=XX-Net
系统启动时会执行 Exec所指定的命令。
登录时自动运行程序
用户登录时,bash先自动执行系统管理员建立的全局登录脚本 :
/ect/profile
然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:
/.bash_profile
/.bash_login
/.profile
但只执行最先找到的一个。因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序。
退出登录时自动运行程序
退出登录时,bash自动执行个人的退出登录脚本
/.bash_logout
例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出登录时自动执行 “tar” 命令备份 *.c 文件。
定期自动运行程序
Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为“00 9 23 Jan HappyBirthday”,运行crontab cronFile后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“”表示不管当天是星期几)。
定时自动运行程序一次
定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:
at [ -f file ] time
在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
$ at 12:00
at> mailto Roger -s ″Have a lunch″ < plan.txt
at> (Ctrl+D)
Job 1 at 2000-11-09 12:00
执行的内容为:2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。
https://wiki.deepin.org/index.ph ... 8%E7%A8%8B%E5%BA%8F
服务程序文件存在目录
ls /etc/init.d
我在网上找到了下面这个关于systemctl 和chkconfig 指令用法比较的表格
任务 | 旧指令 | 新指令 | 使某服务自动启动 | chkconfig –level 3 httpd on | systemctl enable httpd.service | 使某服务不自动启动 | chkconfig –level 3 httpd off | systemctl disable httpd.service | 检查服务状态 | service httpd status | systemctl status httpd.service | 显示所有已启动的服务 | chkconfig –list | systemctl list-units –type=service | 启动某服务 | service httpd start | systemctl start httpd.service | 停止某服务 | service httpd stop | systemctl stop httpd.service | 重启某服务 | service httpd restart | systemctl restart httpd.service |
systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起
|