范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Linux服务开机自启动三种方式,你觉得哪种最优雅?

  很多时候,我们需要将一些服务在Linux系统启动时即自动运行,省得每次都要去手动启动一遍,如Redis, MySQL, Nginx等。本文对CentOS与Ubuntu下开机自启动的配置方法进行整理,供参考查阅。CentOS7的开机自启动配置一. rc.local方式
  rc.local是CentOS以前版本的方式,在CentOS7中仍然以兼容的形式存在,虽仍可用,但不推荐(推荐使用systemd service)。
  1、编写需要开机自启动的脚本,并添加执行权限[root@dev-server-1 ~]# vim test_rclocal.sh  #!/bin/bash time=`date +%F_%T` echo $time" from rc.local" >> /tmp/test.log  [root@dev-server-1 ~]# chmod +x test_rclocal.sh复制代码
  作为测试,上述脚本打印一个时间到/tmp/test.log文件中
  2、在/etc/rc.d/rc.local配置文件中添加脚本运行命令(使用绝对路径)[root@dev-server-1 ~]# vim /etc/rc.d/rc.local   #!/bin/bash # ...注释部分 touch /var/lock/subsys/local  /root/test_rclocal.sh >/dev/null 2>/dev/null 复制代码
  3、添加/etc/rc.d/rc.local文件的执行权限
  在centos7中,/etc/rc.d/rc.local没有执行权限,需要手动授权[root@dev-server-1 ~]# chmod +x /etc/rc.d/rc.local复制代码
  以上三步,即可使/root/test_rclocal.sh >/dev/null 2>/dev/null 命令在服务器系统启动时自动运行。二. chkconfig方式
  1、编写需要开机自启动的测试脚本,并添加执行权限[root@dev-server-1 ~]# vim test_chkconfig.sh  #!/bin/bash  time=`date +%F_%T` echo $time" from chkconfig" >> /tmp/test.log  [root@dev-server-1 ~]# chmod +x test_chkconfig.sh复制代码
  2、在/etc/rc.d/init.d/目录下添加一个可执行脚本testchkconfig[root@dev-server-1 ~]# vim /etc/rc.d/init.d/testchkconfig  #!/bin/bash # chkconfig: 2345 90 10 # description: test chkconfig  /root/test_chkconfig.sh >/dev/null 2>/dev/null  [root@dev-server-1 ~]# chmod 755 /etc/rc.d/init.d/testchkconfig复制代码
  上述testchkconfig脚本的头部必须遵循一定的格式 # chkconfig: 2345 90 10, 其中2345指定服务在哪些执行等级中开启或关闭,90表示启动的优先级(0-100,越大优先级越低),10表示关闭的优先级。执行等级包括0:表示关机1:单用户模式2:无网络连接的多用户命令行模式3:有网络连接的多用户命令行模式4:保留未使用5:带图形界面的多用户模式6:重新启动
  3、加入开机启动服务列表[root@dev-server-1 ~]# chkconfig --add testchkconfig [root@dev-server-1 ~]# chkconfig --list  Note: This output shows SysV services only and does not include native       systemd services. SysV configuration data might be overridden by native       systemd configuration.        If you want to list systemd services use "systemctl list-unit-files".       To see services enabled on particular target use       "systemctl list-dependencies [target]".  netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off network            0:off    1:off    2:on    3:on    4:on    5:on    6:off testchkconfig      0:off    1:off    2:on    3:on    4:on    5:on    6:off复制代码
  使用 chkconfig --list 可查看当前加入开机自启动的服务列表,但如Note部分所述,该命令只显示SysV服务,不包含原生的systemd服务,查看systemd服务可使用systemctl list-unit-files命令。
  以上三步,即可使/root/test_chkconfig.sh >/dev/null 2>/dev/null 命令在服务器系统启动时自动运行。
  chkconfig的其它命令参考$chkconfig --list # 表示查看所有服务在各个运行级别下的状态。 $chkconfig testchkconfig on # 表示指定服务在所有的运行级别下都是开启状态。 $chkconfig testchkconfig off # 表示指定服务在所有的运行级别下都是关闭状态。 $chkconfig --level 5 testchkconfig on # 表示指定服务在运行级别5图形模式的状态下开机启动服务。 $chkconfig --level 5 testchkconfig off # 表示指定服务在运行级别5图形模式的状态下开机不启动服务。复制代码三. 自定义systemd service方式
  CentOS7的systemd服务脚本存放在:/usr/lib/systemd/system(系统级)/usr/lib/systemd/user(用户级)下,以.service结尾。这里以nginx为例
  1、在/usr/lib/systemd/system目录下创建nginx.service文件[devuser@test-server-1 ~]$ sudo vim /usr/lib/systemd/system/nginx.service  [Unit] Description=nginx server Documentation=http://nginx.org/en/docs/ # 依赖服务,仅当依赖的服务启动之后再启动自定义的服务 After=network.target remote-fs.target nss-lookup.target    [Service] # 启动类型,包括simple、forking、oneshot、notify、dbus Type=forking # pid文件路径 PIDFile=/var/run/nginx.pid # 启动前执行的操作 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf # 启动命令 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 重载命令 ExecReload=/usr/local/nginx/sbin/nginx -s reload # 停止命令 ExecStop=/usr/local/nginx/sbin/nginx -s stop # 是否给服务分配独立的临时空间 PrivateTmp=true  [Install] # 服务安装的用户模式,一般使用multi-user即可 WantedBy=multi-user.target复制代码
  其中Service部分的Type包括如下几种类型:simple:表示ExecStart启动的进程是该服务的主进程。如果它需要为其他进程提供服务,那么必须在该服务启动之前先建立好通信渠道,比如套接字,以加快后续单元的启动速度。forking:表示ExecStart进程将会在启动时使用fork()函数,这是传统Unix系统的做法,也就是说这个进程将由systemd进程fork出来,然后当该进程都准备就绪时,systemd进程退出,而fork出来的进程作为服务的主进程继续运行,对于此类型的进程,建议设置PIDFile选项,以帮助systemd准确定位该服务的主进程。oneshot:该进程会在systemd启动后续单元之前退出,适用于仅需要执行一次的程序。比如清理磁盘,你只需要执行一次,不需要一直在后台运行这个程序。notify:与simple类似,不同之处在于该进程会在启动完成之后通过sd_notify之类的接口发送一个通知消息。systemd在启动后续单元之前,必须确保该进程已经成功地发送了一个消息。dbus:该进程需要在D-Bus上获得一个由BusName指定的名称,systemd将会在启动后续单元之前,首先确保该进程已经成功获取了指定D-Bus名称。
  2、 开启开机自启动[devuser@test-server-1 ~]$ sudo systemctl enable nginx.service Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.复制代码
  以上两步,就将nginx服务配置成了在操作系统启动时自动启动。
  其它命令参考$sudo systemctl start nginx.service # 启动 $sudo systemctl restart nginx.service # 重启 $sudo systemctl reload nginx.service # 重载 $sudo systemctl stop nginx.service # 停止 $sudo systemctl status nginx.service # 查看服务状态 $sudo systemctl cat nginx.service # 查看服务配置  $systemctl list-unit-files |grep nginx # 查看服务enabled状态 $sudo systemctl disable nginx.service # 关闭开机自启动   $sudo journalctl -f -u nginx.service # 查看日志 $sudo systemctl daemon-reload # 配置修改后,重新加载复制代码
  根据以上配置,通过start启动nginx服务时,报PID file /var/run/nginx.pid not readable (yet?) after start.的错误,启动失败,日志如下[devuser@test-server-1 ~]$ sudo journalctl -f -u nginx.service -- Logs begin at Wed 2020-03-25 09:14:55 CST. -- Mar 25 11:02:27 test-server-1 nginx[14144]: nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful Mar 25 11:02:27 test-server-1 systemd[1]: PID file /run/nginx.pid not readable (yet?) after start. Mar 25 11:04:29 test-server-1 systemd[1]: nginx.service start operation timed out. Terminating. Mar 25 11:04:29 test-server-1 systemd[1]: Failed to start nginx. Mar 25 11:04:29 test-server-1 systemd[1]: Unit nginx.service entered failed state. Mar 25 11:04:29 test-server-1 systemd[1]: nginx.service failed.复制代码
  从字面看是PID文件不可读,查看/var/run/nginx.pid,该文件也确实不存在,查看nginx.conf配置文件,发现是pid /var/run/nginx.pid;这行配置被注释掉了, 如果不指定pid文件位置,nginx默认会把pid文件保存在logs目录中。所以出现systemd启动服务时找不到pid文件而报错,将nginx.conf中的pid配置注释去掉,重启nginx.service即可。Ubuntu18.04的开机自启动配置
  在Ubuntu18.04中,主要也是以systemd服务来实现开机自启动,systemd默认读取/etc/systemd/system/下的配置文件,该目录下的一些文件会链接到/lib/systemd/system/下的文件。
  因此可以在/etc/systemd/system/目录下面创建一个自启动服务配置,以内网穿透服务frp客户端为例,如[Unit] Description=frpc After=network.target Wants=network.target  [Service] TimeoutStartSec=30 ExecStart=/home/devuser/apps/frp/frpc -c /home/devuser/apps/frp/frpc.ini ExecStop=/bin/kill $MAINPID Restart=1  [Install] WantedBy=multi-user.target复制代码
  各配置项与CentOS类似。然后将服务器加到自启动列表中并启动服务$sudo systemctl enable frpc $sudo systemctl start frpc复制代码
  其它更多systemctl命令与CentOS类似。
  也可以使用/lib/systemd/system/rc-local.service来执行一些开机需要执行的脚本,该文件内容为#  SPDX-License-Identifier: LGPL-2.1+ # #  This file is part of systemd. # #  systemd is free software; you can redistribute it and/or modify it #  under the terms of the GNU Lesser General Public License as published by #  the Free Software Foundation; either version 2.1 of the License, or #  (at your option) any later version.  # This unit gets pulled automatically into multi-user.target by # systemd-rc-local-generator if /etc/rc.local is executable. [Unit] Description=/etc/rc.local Compatibility Documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.local After=network.target  [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no复制代码
  从Description看它是为了兼容之前版本的/etc/rc.local的,该服务启动命名就是/etc/rc.local start,将该文件链接到/etc/systemd/system下$ sudo ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service  复制代码
  创建/etc/rc.local文件,并赋予可执行权限$ vim /etc/rc.local #!/bin/bash   echo "test rc " > /var/test.log    $ sudo chmod +x /etc/rc.local复制代码<完>
  作者:半路雨歌
  链接:https://juejin.cn/post/6844904104515338248

iPhone13依旧不送官方原装充电器,但我有更好的推荐就在昨晚,苹果于线上正式发布了备受网友期待的iPhone13系列。与此前传闻的消息一致,本次iPhone13系列共包括iPhone13miniiPhone13iPhone13Pro腾讯又在抢三大运营商的饭碗?从2015年开始,监管层连续7年大力实施提速降费以来,我国的手机流量费和宽带费用都实现了超过90的降费,而且与之相伴的是网络覆盖广度和深度的极大扩展。提速降费一方面推进了全社会的信第一批00后程序员,已经开始油了吗?2021年9月全国程序员有435501人,平均工资为15052元,工资的中位数是13000元,其中北京最高薪资达到5万元。一城市排名在这个互联网经济高速发展的时代,争抢进大厂的这股工信部上线一证通查电话卡,字节辟谣盗取腾讯关系链1工信部上线一证通查业务可查询用户名下电话卡数量(快科技)一证通查业务网页端在今日正式上线,同时,支付宝小程序也上线了该功能。全国移动电话卡一证通查是由工信部指导,中国信通院中国电iPhone13香不香?香,但渠道不再看运营商苹果新品发布会,不管你怎么表示没有期待,但它依然是科技圈里最受关注的发布会。和过去几年的发布会一样,观众们对新品表示失望的声音依然强烈。不过,面对苹果高端机,不管嘴巴怎么说,行动是腾讯发布微信外部链接内容管理规范调整的声明据鹅厂黑板报微信公众号9月17日消息,近期,工信部对外链管理提出了专项指导意见。微信将落实以安全为底线的互联互通,为确保高质量的平台内容和良好的用户体验,整体遵循如下外链开放原则1比无人机更酷炫!汉王科技发布了几只鸟,还有这么多智能新品9月16日,汉王科技举办了以从0到N原创先锋为主题的秋季新品发布会,带来GoGoBird老鹰孔雀毕方蝴蝶电纸办公本1001汉王e典笔S30人脸识别考勤机HWD3多款全新产品,涵盖一联想小新Pro14屏幕升级2。8K90Hz,9月28日开售9月17日消息,昨天联想小新官方微博发消息称,将会对联想小新Pro142021的屏幕进行升级。升级后,联想小新Pro142021酷睿锐龙高刷版将会用上14英寸2。8K(2880x1为什么配助听器比配眼镜麻烦?矫正听力损失更为复杂虽然眼睛和耳朵都同属五官大家庭,但是视力损失和听力损失却大不相同的。视力损失通常可以用眼镜矫正到较正常水平,而佩戴上助听器后听力完全恢复到正常水平,这一点与戴眼三叶草智能水面垃圾桶亮相,两台可清理一亩水域垃圾新京报快讯(记者张璐实习生王苗苗)在2021世界机器人大会上,一款漂浮在水面,形似三叶草的智能水上机器人亮相。这款智能水面垃圾桶只需两台,就可以满足一亩水域的垃圾清理工作。在水面上对标iPhone13mini!三星GalaxyS22参数曝光骁龙8986英寸屏幕前几天的苹果发布会上,我们如期见到了iPhone13系列,此次iPhone13延续上代的规划,仍有定位小屏旗舰的mini系列,这也让不少小屏党感觉惊喜,毕竟现在的手机都在往大屏发展
motoedgeX30横空出世,最该感谢的是司马南老师这两天数码圈最热的无凝是联想的motoedgeX30和S30了,打开头条到处都在热议,妥妥的C位。这应该是本年度最经典的危机公关了,估计会被列入教科书成为经典案例。联想的事最近闹得神秘商业组织泰山会有多强大?资金超过九万亿人民币2021加油带头人司柳网络大战持续发展,司马南依然公开讨伐柳传志和联想集团,以一己之力对战商界大佬。在近期司马南更是爆出了一个神秘商业组织,那就是泰山会,相信很多人不知道这个泰山会老师说用Python做个学生管理系统,就不追究我旷课的事情了文章目录由于Python都会了,学校教的确实基础,平时就没怎么去上课,让美女老师天天脑壳痛,这不快毕业了,让我做一个学生管理系统出来,还要打包成exe发给她,她就不追究我不上课的问助听器戴了6年了,最近听的不是很好,需要重新买吗?你好助听器戴了6年了,最近听的不是很好,需要重新买吗?一般助听器使用寿命58年,6年助听器的性能肯定有所下降,是可以更换一个助听器了,不过还是要复查听力试听一下新产品。希望我的回答定制的助听器有什么颜色,该如何选择?具体的你可以去专业的听力中心去看看,有的品牌的颜色会有所不同,一边外壳有肉色,红色,蓝色,黑色等很多种的颜色。有的啊,助听器定制机一般都是肉色的当然有喜好的可以选择红色蓝色黑色等等联想真的国有资产流失吗?我给邻村郭员外,放羊,按时领工资,郭老爷对我也很好。后来,羊群规模越来越大。我就想办法,卖一部分羊,买牛,然后,牛下犊,我养小牛,卖大牛,换回羊,一阵操作,合法的把新增牛群变成了我华为德科软件测试岗和中兴核心网工程师的offer如何选择比较好呢?先说点题外话。华为德科软件测试岗,也就是OD。华为的OD现在在外界被传烂了,很多人听到OD,恨不得脱口而出gun。然而事实上,很多人真的没有资格喷OD的。以西安为例,华为OD岗能开清华学霸高杏欣破解我国北斗编码,却卖国求荣为美国效力中国北斗高高挂在北半球夜空的北斗七星像指南针一样为人们指明方向,对古代出行和辨别季节起着重要作用。随着社会的发展与科技的进步,一种全新的技术在该基础上更新创造,并不断改进,使人们的想入手华为手机,哪款性价比最高?Nova系列怎样呢?想入手华为手机,哪款性价比最高?NoVa系列怎么样?购买华为手机看自己的使用特性和预算,华为Nova手机在华为系列手机中是一款中端旗舰机手机,使用流畅度和其他性能良好华为手机虽然顶几款销量和性价比都很高的爆款千元手机,到底应该如何选?手机现在已经成为人们生活中必不可少的最核心的商品,每个人每天甚至每时每刻几乎都离不开手机,毫不夸张地说,手机陪伴每个人都时间比伴侣都多。手机这么重要,选购手机的时候就必须掌握一些最跨年巨作!字节技术官手码1938页LeetCode热门高解,GitHub已上榜春招已经开始筹备了。你是不是已经开始准备了呢?一直以来,刷力扣都是程序员学习算法路上最大的绊脚石,但是究竟应该怎么刷呢,相信还是有很多人不知道。掌握方法很重要,正所谓做好准备,事半