查看原文
其他

我的服务器怎么老这么慢,难道说是被挖矿了?linux开机启动项自查

小熊爱编程 机智的程序员小熊 2022-08-24

“今天又是想让老板刮目相看的一天——编程三分钟

上次闯了祸以后,一出问题老板第一个想到的就是我。。


但是这个事真的不是我的锅啊,幸亏我机智,拿出我的《计算机基础教程》一顿操作下来,发现了一个叫 minerd 的挖矿进程,占用了90%多的内存,看来要升值加薪了!

让我们一起来总结一下哪些地方能设开机自启动程序吧!

linux服务器开机启动项

以往的服务通常使用supervisord或者crontab的方式来守护或者定时执行。但是这些往往很容易发现,一些比较隐蔽的地方会被黑客加一些奇怪的进程,开机就自动跑,我们就必须具备福尔摩斯的能力。

用户自定义开机程序 /etc/rc.d/rc.local

  • 这些就是开机的时候会自动执行的脚本和命令了。这台是腾讯云的服务器,上面的进程一般是监控机器cpu内存使用率之类的程序

  • /etc/rc.local软链接到了/etc/rc.d/rc.local,所以写到哪个文件里都是一样的

  • 写在这个文件里的开机脚本都是默认后台执行的,不需要再加&符号了

自写脚本-登陆自动执行脚本(不是开机自动执行) /etc/profile

  • 目录中存放的是一些应用程序所需的启动脚本,其中包括了颜色、语言、less、vim及which等命令的一些附加设置。

  • 当一个用户登录Linux系统或使用su -命令切换到另一个用户时,也就是Login shell 启动时,首先要确保执行的启动脚本就是 /etc/profile 。(只有Login shell启动时才会运行 /etc/profile 这个脚本,也就是需要输入账号和密码的时候,而Non-login shell 不会调用这个脚本)

  • 这些脚本文件之所以能够 被自动执行,是因为在/etc/profile中使用一个for循环语句来调用这些脚本。而这些脚本文件是用来设置一些变量和运行一些初始化过程的。

chkconfig 命令设置,可以设置优先级别 

要说这种方式就要先介绍/etc/rc.local/init.d目录,要使用chkconfig来管理自动启动的脚本,第一件事就是将启动文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下才可以

  1. 此目录下的脚本会被提供给service或者systemctl使用

  2. 一般这里面的脚本都必须支持传入这些参数start、stop、reload、restart、force-reload来达到启停目的,绝大多数的情况下,你会使用到start,stop,restart选项

  3. 当然了要使用init.d目录下的脚本,你需要有root权限或sudo权限。每个脚本都将被作为一个命令运行,每个脚本也至少需要755权限。

chkconfig 如何添加一个服务 

增加服务的步骤:

  1. 服务脚本必须存放在/etc/init.d/目录下;

  2. chkconfig --add servicename在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;

  3. chkconfig --level 35 mysqld on修改服务的默认启动等级。

  • 脚本文件前面务必添加如下三行代码,否侧会提示chkconfig不支持

告诉系统使用的shell,所以的shell脚本都是这样#!/bin/sh 分别代表运行级别,启动优先权,关闭优先权,此行代码必须 #chkconfig: 35 20 80 (自己随便发挥)此行代码必须#description: http server

chkconfig –add 脚本文件名 操作后就已经添加了

使用范例:

运行级别

代表是何等级时可以在开机时自动运行此服务

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

  • 如果默认情况下,服务不应在任何运行级别中启动,则应使用-代替运行级别列表。

  • 通常自己的服务使用等级35就可以了,最多2345也就是chkconfig servicename on

ntsysv 类图形界面管理模式(RedHat特有)

Linux ntsysv命令用于设置系统的各种服务。

这是Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。

这种方式不算通用,所以我这里就不赘述了,有兴趣可以移步Linux ntsysv:设置系统服务

总结

开机启动项

1. 添加脚本到或者命令 /etc/rc.d/rc.local

2. 先把脚本放到/etc/rc.d/init.d下,再使用chkconfig servername on命令添加2345运行级别到开机启动项(脚本写的规则见详情)

3. ntsysv不常用可以忽略

使用密码登陆时自动运行

  • 把脚本放到/etc/profile.d/




只要有一个人能获得帮助,小熊就会继续努力

喜欢就让我们一起玩耍吧

不用背锅啦!开心,话说为什么每次出问题老板都先想到的是我呢?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存