分类 电脑 下的文章

Linux系统耗用CPU的异常进程处理一例 - 十个随机字符进程名称

一网友说,某主机商禁止了VPS的互联网,因为有异常行为。在top命令下查看,有一个进程占用较多的CPU资源,且强制退出几分钟后又会重新出现。

网上搜索得这篇文章,http://blog.51cto.com/zhuxingye/1735794 ,基本相符。所以实践如下:

1.top 命令,显示有一个 hcvlsajtls 名称的进程,占用了25.2%的CPU
10-names-linux-cpu-0.png

2.crontab -e ,查看任务列表,有一条异常内容,/var/.syslog
10-names-linux-cpu-1.png

3.service --status-all 查看服务列表,有一项和进程同名的异常服务,hcvlsajtls
10-names-linux-cpu-2.png

4./etc/crontab 的内容,每隔三分钟,运行 /etc/cron.hourly/gcc.sh
10-names-linux-cpu-3.png

5./etc/cron.hourly/gcc.sh 的内容,异常文件 /lib/libudev.so
10-names-linux-cpu-4.png

6.rm -f /etc/cron.hourly/gcc.sh && chattr +i /etc/crontab # 删除 /etc/cron.hourly/gcc.sh 文件,且不允许修改 /etc/crontab 文件
10-names-linux-cpu-5.png

7.kill -STOP 5090 # 查找到新异常进程zeckmkmbsr的ID,本例是 5090,用 kill 命令停止它,没有强制退出
10-names-linux-cpu-6.png

8.find / -name '*zeckmkmbsr*' | xargs rm -f # 在整个系统中查找出同名的文件,都删除(好象有点暴力,会不会误删其它文件?)
10-names-linux-cpu-7.png

9.pkill zeckmkmbsr && rm -f /lib/libudev.so # 强制退出异常的进程,且删除异常文件 /lib/libudev.so
10-names-linux-cpu-8.png

10.重启系统后,用top再观察十分钟,没看到10个随机字符的进程了
10-names-linux-cpu-9.png

参考:http://blog.51cto.com/zhuxingye/1735794

为magento2站点更换访问网址(域名)

感谢瓜哥。

环境:宝塔nginx,php7.0,mysql5.7,magento2

过程:

1.登录到宝塔控制面板,在数据库管理列表里,选择magento2站点使用的数据库,点击“管理”
magento-change-url-01.png

2.在 core_config_data 数据表,找到 web/unsecure/base_urlweb/secure/base_url
magento-change-url-03.png

3.用新网址(域名)替换旧的
magento-change-url-02.png

4.之后,在站点文件目录中,删除或改名原 var/cache 目录,清除缓存
magento-change-url-04.png

5.用新网址登录到magento2后台,在系统,缓存管理页面中,更新所有相应的缓存

也可以通过magento的命令行来修改,如:
php bin/magento setup:store-config:set --base-url="http://szt.anqun.org/"
php bin/magento setup:store-config:set --base-url-secure="https://szt.anqun.org/"

参考:

用 xdotool 获取 Linux 桌面元素坐标

Windows下有“按键精灵”软件,可以自动完成一些填表,点击任务。在Linux下,如果需要自动化操作,可能需要先获取到图标或表格输入框的坐标元素。网上有视频,可以通过创建xdotool的脚本来获取到坐标。

操作系统是 ubuntu 18, ubuntu-unity-desktop 桌面

过程:

1.如果当前系统无xdotool命令,可通过 apt install xdotool 安装

2.创建一个可执行的脚本文件xdot.sh,内容如下:

#!/bin/bash

while [ 1 ];
do
xdotool getmouselocation|sed 's/x:\([0-9]\+\)[ \t]y:\([0-9]\+\)[ \t].*/\1;\2/'
done

xdotool-1.png

3.在终端里执行xdot.sh,鼠标移到哪,终端里会显示相应位置的坐标
xdotool-2.jpg

参考:

Linux脚本 - 自动检查服务是否运行 - 如没运行自动重启

一用户说,wordpress的站点,还在测试,为什么打不开,页面提示 Error establishing a database connection 了呢。登录查看,当时无mysql进程,可能当系统资源不够用时,系统强制退出了mysql数据库进程。

以下是在Debian 9 里,使用apt安装的mariadb数据库,设置了每隔三分钟检查mysql是否有运行,如没运行,自动启动。

过程:

1.数据库进程异常退出后,访问wordpress站点,提示 Error establishing a database connection 出错
auto-start-mysql-service-1.png

2.登录到系统,执行 ps aux | grep mysql ,无mysql进程
auto-start-mysql-service-2.png

3.执行 service --status-all ,列出当前注册为服务的名称,如有mysql服务
auto-start-mysql-service-3.png

4.wget https://raw.githubusercontent.com/sierracircle/services-checker/master/services # 下载自动启动服务的脚本

5.chmod +x services # 添加执行权限

6.vi services # 修改脚本内容,如可将邮件通知的邮箱地址 EMAIL 修改为自己的,修改要检测的服务名 SERVICES,本例是 mysql
auto-start-mysql-service-4.png

7.crontab -e # 添加自动化任务,每隔三分钟执行脚本 /root/services

# check on services every 3 minutes
*/3 *  * * * /root/services

auto-start-mysql-service-5.png
8.保存后,等约三分钟,脚本自动启动mysql数据库,wordpress可以正常访问了
auto-start-mysql-service-6.png

参考:

宝塔面板 - 申请站点SSL时提示出错 - invalidemail - 无效的联系电子邮箱

过程是这样的:

1.在站点管理,申请Let's Encrypt证书时,随意填写了一个管理员邮箱(不存在的MX域)
bt-ssl-invalidemail-2.jpg

2.提交时,提示出错,InvalidMmail。尝试在表单里,替换其它有效的电子邮箱地址,或删除,还是一样的出错信息
bt-ssl-invalidemail-1.jpg

3.登录到系统,用 acme.sh --debug --issue -d ssl.domain.com -w /www/wwwroot/ssl.domain.com 的命令来测试,看到使用的配置文件存储在 /root/.acme.sh
bt-ssl-invalidemail-3.jpg

4.删除或注释掉配置文件 /root/.acme.sh/account.conf 里的 ACCOUNT_EMAIL 这一行,保存
bt-ssl-invalidemail-4.jpg

5.之后,返回到宝塔面板的站点管理,重新申请Let's Encrypt证书,本次就不填写“管理员邮箱”了
bt-ssl-invalidemail-5.jpg

6.申请SSL成功
bt-ssl-invalidemail-6.jpg

参考:https://www.bt.cn/download/linux.html