【linux基础】如何开机自启动某个程序-linux工具-ubuntu

前言

实际使用中应用程序或者服务需要开机自启动,而不是人为手动开启运行,那么,该如何做呢,本文对此进行介绍。

操作过程

一、使用startup applications工具

1. 确定系统的桌面环境;

具体可参考here;

2. 如何自启动;

博主ubuntu系统的桌面环境是Unity,这是一款ubuntu自家的桌面环境,使用startup applications工具进行开机自启动。

在Unity Dash中键入"startup"(启动)。一旦"Startup Application"(启动应用程序)图标出现,就点击该图标。
一旦"Startup Applications Preferences"(启动应用程序首选项)窗口打开,添加一个paogram,

输入"Name"(名称)、"Command"(命令)和"Comment"(注释),即可配置自动启动的某个程序。

一定要注意,这里使用的是所有路径都必须是绝对路径,包括应用程序中涉及到的目录。

3. 如何关闭自启动的程序;

直接使用ctrl+C不管用,程序还能继续正常运行;

killall program_name

 4. 如果运行程序的命令带有参数,直接将运行的命令、参数写入command,并不可以;将所运行的命令写入shell文件,将shell文件写入command中,也是不可以的;

 二、使用rc.local脚本

1)这个方法试了好几次也没有成功;如果在exit 0之前,添加mkdir的命令,reboot之后发现在指定目录下是可以新建目录的;

说明还是最后添加的要运行程序的命令的运行有问题,但是直接运行该命令是没有问题的,绝对路径、sleep、bash/sh都试过了;

 

2)感觉rc.local没有运行成功,rc.local默认的执行用户是root,权限也是。

killall -QUIT uwsgi是异步的,中间要sleep 1,歇一秒,不然直接start会继续被杀掉。

3)在shell执行命令后加&是为了让应用程序在后台运行,rc.local也是一个脚本,主进程在运行这个脚本时必须能够返回,如果在这个脚本里面执行了一些死循环或者其他无法返回的任务,整个系统就很可能卡死在这里,无法启动,所以在这里运行的用户程序必须是能够返回或者本身就使用一些后台运行的进程。

4)关机自启动之后查看可执行是否自启动,是可以看到结果的,但是很快就结束了。。是因为可执行文件后带有参数嘛???


ps
-ef | grep exec_name

 

三、使用init.d目录

按照步骤操作,最后一步关机重启的时候,程序没有开机自动启动;

 运行级别

$ runlevel
N 5 # output

 

update 20220725

红绿灯项目,试过几个博客的方法,都没有成功,最后还是修改了源代码,直接使用startup applications工具完成;难道和带有参数有关???

使用不带参数的程序测试了rc.local和init.d两种方法,还是没有成功;

 

参考

1. 七大Linux桌面介绍:Unity、KDE、GNOME等等

2. 如何在Linux桌面环境下自动启动程序

3. How To Manage StartUp Applications In Ubuntu

4. manage-startup-applications-ubuntu

5. Ubuntu16、18 开机 自启动脚本或命令

6. ubuntu下 rc.local的脚本不运行

7. 使用init.d目录

 

posted on 2018-04-20 09:38  鹅要长大  阅读(1012)  评论(0编辑  收藏  举报

导航