在ubuntu中,如何开机自启动一个有界面程序
Posted 搞IT的锋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ubuntu中,如何开机自启动一个有界面程序相关的知识,希望对你有一定的参考价值。
有多种方法可以开机自启动一个有界面程序,以下是其中两种常用的方法:
方法一:使用gnome-session-properties
-
打开终端,输入命令:gnome-session-properties,打开“启动应用程序首选项”窗口。
-
点击“添加”按钮,填写应用程序的名称、命令和注释,例如:
名称:My Program
命令:/usr/bin/myprogram
注释:启动My Program -
点击“添加”按钮后,该应用程序会被添加到“启动应用程序”列表中。
-
关闭窗口,重启电脑后该应用程序会自动启动。
方法二:使用rc.local
-
打开终端,输入命令:sudo nano /etc/rc.local,编辑rc.local文件。
-
在文件末尾添加应用程序的启动命令,例如:
/usr/bin/myprogram &
-
保存文件并退出。
-
重启电脑后,该应用程序会自动启动。
注意:使用rc.local方法需要注意以下几点:
- rc.local文件必须有执行权限:sudo chmod +x /etc/rc.local。
- 启动命令必须在文件末尾添加,且必须加上&符号,使其在后台运行。
- 启动命令必须在exit 0语句之前添加。
Ubuntu 设置系统环境变量和开机自启动
一、Ubuntu系统环境变量详解
参考这篇文章,讲的非常详细
二、开机自启动
在Linux下设置软件开机自动有三种方式:
1、 自动启动应用程序——rc.local脚本
2、 自动启动服务——update-rc.d
3、 启动应用程序首选项
4、 使用Systemd
下面来介绍这四种方式:
1、自动启动应用程序——rc.local脚本
rc.local脚本是一个Ubuntu开机后会自动执行的脚本,在该脚本内添加命令行,开机时会自动执行。
-
脚本路径/etc/rc.local
-
需要root权限才能修改。
添加命令
打开文件,在exit 0前添加要执行的命令,里面可以直接写命令或者执行Shell脚本文件sh。
如下,添加的5行命令
第1,2行是用于输出log 的
第4,5行,是启动程序的
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.:
/bin/bash /usr/local/XX-Net-3.10.4/xx_net.sh 1>> /etc/mylog # send stderr from rc.local to a log file
2>&1 # send stdout to the same log file
set -x # tell sh to display commands before execution
sudo miredo
sudo /usr/local/XX-Net-3.10.4/xx_net.sh start
exit 0
这里的设置开机自动执行的sudo命令也是可以执行的
rc.local命令不执行,程序不启动的问题
1、如下面所示,添加log,查看程序执行情况
2、rc.local文件头部/bin/sh修改为/bin/bash
3、如果是执行sh文件,那么要赋予执行权限sudo chmod +x xxx.sh,然后启动时加上sudo sh xxx.sh
2、自动启动服务——update-rc.d
使用 update-rc.d增加开机启动服务,给Ubuntu添加一个开机启动脚本,操作如下:
1、新建个脚本文件new_service.sh
#!/bin/bash
# command content
exit 0
2、设置权限
sudo chmod 755 new_service.sh
#或者
sudo chmod +x new_service.sh
3、把脚本放置到启动目录下
sudo mv new_service.sh /etc/init.d/
4、将脚本添加到开机启动脚本
执行如下指令,在这里90表明一个优先级,越高表示执行的越晚
cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90
5、移除开机启动脚本
sudo update-rc.d -f new_service.sh remove
6、通过sysv-rc-conf来管理上面启动服务的启动级别等,是否是开机启动
sudo sysv-rc-conf
7、update-rc.d的详细参数
使用update-rc.d命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下):
update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
update-rc.d <basename> start|stop <NN> <runlevels>
-
-n: not really
-
-f: force
-
disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
-
start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
-
NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
-
runlevels:则指定了运行级别。
实例:
(1)、添加一个新的启动脚本sample_init_script,并且指定为默认启动顺序、默认运行级别:
update-rc.d sample_init_script defaults
上一条命令等效于(中间是一个英文句点符号):
update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6
(2)、安装一个启动脚本sample_init_script,指定默认运行级别,但启动顺序为50:
update-rc.d sample_init_script defaults 50
(3)、安装两个启动脚本A、B,让A先于B启动,后于B停止:
update-rc.d A 10 40
update-rc.d B 20 30
(4)、删除一个启动脚本sample_init_script,如果脚本不存在则直接跳过:
update-rc.d -f sample_init_script remove
这一条命令实际上做的就是一一删除所有位于/etc/rcX.d目录下指向/etc/init.d中sample_init_script的链接(可能存在多个链接文件),update-rc.d只不过简化了这一步骤。
(5)禁止Apache/MySQL相关组件开机自启:
update-rc.d -f apache2 remove
update-rc.d -f mysql remove
8、服务的启动停止状态
sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart
9、查看全部服务列表
sudo service --status-all
3、启动应用程序首选项
可以通过在控制台运行 gnome-session-properties
就会打开下面的窗口,对应桌面上的启动应用程序
4、使用Systemd
Systemd 的使用有些复杂,未亲自尝试。有兴趣的小伙伴,可以来这里学习一下Systemd 入门教程:命令篇
参考:
Ubuntu下添加开机自动脚本
Ubuntu 16.04设置rc.local开机启动命令/脚本的方法
ubuntu如何用自启动软件,用root启动的那种(sudo)
ubuntu如何用自启动软件,用root启动的那种(sudo)
在ubuntu中如何管理startup application
关注我的公众号,轻松了解和学习更多技术
以上是关于在ubuntu中,如何开机自启动一个有界面程序的主要内容,如果未能解决你的问题,请参考以下文章