Ubuntu开机自启动程序的方法

Ubuntu开机自启动程序的方法

主要参考文章

目标效果

开机运行写好的脚本文件,启动terminal,执行ros及相关桌面程序

gnome-terminal -x bash -c “roscore; exec bash;”

方案1:修改rc.local

编辑/etc/rc.local文件完成此功能,在exit 0 之前写入要执行的代码即可。可以加入如下代码片段,方便查看执行情况

    #log
    exec 2> /tmp/rc.local.log  # send stderr from rc.local to a log file  
    exec 1>&2                  # send stdout to the same log file  
    set -x                     # tell sh to display commands before execution 

开机后,在/tmp/rc.local.log文件中可以看到该文件执行的具体信息

测试结果

可以运行到这个脚本,但运行不了terminal.

方案2:单独增加一个开机启动的脚本

etc/init.d/文件夹下,可以看到很多脚本,最好任意打开一个作为参照仿写。

    cd /etc/init.d/
    sudo touch new.sh #这个文件夹好像不需要sudo权限

先尝试脚本能不能正常运行,可能会遇到以下错误:

错误1

    insserv: script new.sh is not an executable regular file, skipped!
    # 需要给权限
    sudo chmod +x /etc/init.d/new.sh

错误2

insserv: warning: script 'xxxx' missing LSB tags and overrides
insserv: Starting nifi depends on plymouth and therefore on system facility `$all' which can not be true!

需要仿照其它文件,加上说明头:

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

继续操作,设定更新,具体可以查看开头的参考文章,90是执行顺序

sudo update-rc.d new.sh defaults 90

理论上,这样更新rc-d之后,会生成S90开头的软链接,但我操作完生成的软链接都是S01开头的…尴尬…
移除上面生成的软链接:

sudo update-rc.d -f new.sh remove

实测结果

与方法1是同样的,在这个级别启动时,桌面尚未启动,运行不了terminal.

refs

关于Ubuntu运行级别、开机启动脚本的说明

设置Linux自启服务以及优先级,这一篇讲的很复杂,照着做的时候做到创建软链接

sudo ln -vsf /etc/init.d/proxyserver S98proxyserver

不知道是不是我没有-vsf,系统提示我不能这样创建,就停在这里了。

方案3:利用官方快捷方式启动

将写好的脚本赋予权限后,在左上角搜startup applications,出来对话框后,直接增加一个,在command里面输入要运行的脚本文件路径即可。

这种方式适合启动桌面程序,执行优先级最低

找不到的话,命令行运行也可以起到同样的效果:

gnome-session-properties

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值