很多小伙伴比较关心linux设置应用开机自启动(linux开机自启动应用程序),本文带大家一起看看linux设置应用开机自启动(linux开机自启动应用程序)。

对于非yum方式安装的软件来说,系统的时候,我们只能先进入其对应的二进制文件目录下(一般为bin目录),然后运行对应的二进制文件进行启动。这种方式除了比较繁琐外,还无法实现开机自启。为了能够让程序使用systemctl命令便捷启动和开机自启,就需要做一些配置。下面以Elasticsearch为例进行演示。

需要说明的是,如何进行解压和安装Elasticsearch,大家可以自行在网上查找对应教程,我这里就不再过多演示。

编写XXX.service配置文件

首先使用如下命令来进入到/usr/lib/systemd/system目录下:

cd /usr/lib/systemd/system

接着创建elasticsearch.service配置文件,并输入如下所示的内容:

[Unit]# 描述Description=elasticsearch# 表示在network.target启动之后启动After=network.target# 表示依赖关系,wants表示弱依赖,此外还有requires表示强依赖(也就是network.target启动失败时,elasticsearch一并退出)Wants=network.target[Service]# 表示启动类型Type=forking# 指定启动用户User=elasticsearch# 指定启动的用户组Group=elasticsearch# 指定变量参数文件, 需要提前创建EnvironmentFile=/etc/sysconfig/elasticsearch# 启动时执行的命令ExecStart=/opt/elasticsearch/elasticsearch-8.2.2/bin/elasticsearch -d# 重新启动时执行命令ExecReload=/bin/kill -s -HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDKillMode=process[Install]# 表示该服务所属的targetWantedBy=multi-user.target

对于自定义的服务端配置单元来说,大致分为三个模块,分别是:控制单元(Unit)、服务本体(Service)和安装服务(Install)

控制单元(Unit)

对于控制单元来说,Description为整个控制单元的描述,可根据需要进行编写;Before/After用于指定启动的顺序,这里的network.target则代表网络,如果是network-online.target则表示一个连通的网络。

服务本体(Service)

对于上面的服务本体来说,Type表示服务类型,其类型有:

Simple:是默认也是最简单的数据类型,也就是启动的程序主体。forking:是标准Unix Daemon使用的启动方式,启动程序后会调用fork函数,将必要的通信信道设置好之后父进程会退出,而子进程则以守护的方式继续运行。oneshot:适用于一次性执行的任务或命令,运行完成之后不会存在任何痕迹。也正因为如此,需要使用 RemainAfterExit=yes,也就是说即使没有进程存在,Systemd也认为该服务启动成功了。dbus:这个程序启动前需要先获取一个DBUS空间,其需要和BusName一起使用,只有成功获取到DBus空间之后,其所依赖的程序才能正常启动。

而User和Group分别用于指定启动该服务端的特定用户和用户组;ExecStart、ExecReload和ExecStop则分别用于指定服务启动、服务重新加载和服务关闭的命令,需要说明的是命令的启动程序必须使用绝对路径。

对于KillMode来说,有如下几个值:

control-group : 默认值,当前的控制组里面的所有进程都会被杀掉process:只杀主进mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号安装服务(Install)

对于安装服务来说,WantedBy表示该服务被哪个用户程序进行装载,一般设置为multi-user.target即可。

加载配置并验证

当配置文件编写完毕后,就需要使用如下命令来重新加载:

systemctl daemon-reload

执行之后并不会有任何内容输出,因此需要使用如下命令来进行验证:

systemctl status elasticsearch

执行结果如下所示:

此时说明自定义服务已经成功,接着执行如下命令来启动elasticsearch服务:

systemctl start elasticsearch

执行后,再次使用systemctl status elasticearch命令查看,结果如下所示:

当然,如果需要开机自启,只需要如下命令:

systemctl enable elasticsearch

到此,如何自定义系统服务就已经介绍完毕,希望对大家有所帮助。

linux设置开机自启动

linux设置开机自启动执行命令 :

执行命令 : 编辑"/etc/rc.local",添加你想开机运行的命令

运行程序脚本 :然后在文件最后一行添加要执行程序的全路径。

例如,每次开机时要执行一个hello.sh,这个脚本放在/usr下面,那就可以在"/etc/rc.local"中加一行"/usr/./hello.sh",或者" cd /opt && ./hello.sh " 注意,你的命令应该添加在:exit 0 之前

linux在“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件 Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。

简单的说,运行级就是操作系统当前正在运行的功能级别。

例:在Ubuntu/debain里,可以使用update-rc.d命令来把示例脚本:/etc/init.d/proxy安装到各个runlevel中。

update-rc.d后面有三个参数,分别是/etc/init.d下的脚本名字,默认安装方式,运行的优先级。优先级的数字越大,表示越迟运行,这里我们把自己写的服务放在最后运行。

如果要卸载随机启动的服务,执行

在update-rc.d安装的时候提示了警告信息,是因为我们写的/etc/init.d/proxy太简陋了,只包含了我们想要的命令,连LSB的信息也没有提供。

只需要对自启动脚本做一些小改动,就可以避免那个警告了。如下:

到此,一个最简单的随机启动服务写好了,看起来文章挺长的,但其实也就几个命令而已。 在下次开机启动的时候,proxy.py就会以root用户身份被自动运行。

在/etc/init.d下新建示例脚本文件(startTest.sh),该脚本会启动/opt/test.sh。内容如下:

写了脚本文件之后事情还没有完,继续完成以下几个步骤:

linux开机自启动命令

  用户想要在linux开机的时候自启动相关的程序。那我们要怎么设置呢?下面由我为大家整理了linux下开机自启动命令的相关知识,希望对大家有所帮助!

  linux下开机自启动命令

  1.开机启动时自动运行程序

  Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。

  例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。

  扩展:其他情况下linux自启动程序命令

  2.登录时自动运行程序

  用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。

  因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。

  3.退出登录时自动运行程序

  退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。

  4.定期自动运行程序

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

  例如,建立文件crondFile,内容为"00 9 23 Jan * HappyBirthday",运行"crontab cronFile"命令后,每当元月23日上午9:00系统自动执行"HappyBirthday"的程序("*"表示不管当天是星期几)。 (/etc/crontab中配置命令即可)也可以

  5.定时自动运行程序一次

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

  6.创建开机自启动脚本

  1) 将你的启动脚本复制到 /etc/init.d目录下

  以下假设你的脚本文件名为 test。

  2) 设置脚本文件的权限

  $ sudo chmod 755 /etc/init.d/test

  3) 执行如下命令将脚本放到启动脚本中去:

  $ cd /etc/init.d

  $ sudo update-rc.d test defaults 95

  注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:

  update-rc.d: warning: /etc/init.d/test missing LSB informationupdate-rc.d: see

  卸载启动脚本的方法:

  $ cd /etc/init.d

  $ sudo update-rc.d -f test remove

  命令输出的信息参考如下:

  Removing any system startup links for /etc/init.d/test … /etc/rc0.d/K95test /etc/rc1.d/K95test /etc/rc2.d/S95test /etc/rc3.d/S95test /etc/rc4.d/S95test /etc/rc5.d/S95test /etc/rc6.d/K95test

更多linux设置应用开机自启动(linux开机自启动应用程序)请持续关注本站。