嘛,说来刚开 Blog 的时候就打算买一个域名然后加个证书。

正好上周某良心 JS 开了个便利店(指的就是 @showfom 啦啊哈哈

WildCard 还打折,域名价格也相当良心啊 – –

于是劳伦斯咬紧牙关,掏出了 80 大洋(心疼啊)氪了一域名还有一野卡(

hola,你们现在访问 winooxx.tk 还是 lawrencexs.xyz 都会跳转到 https://lawrencexs.xyz 啦 23333

晚点整理过后就发一份 SSL Lab 评分为 A+ 的 Nginx 配置

(本文源自 用shell脚本实现监控程序自动重启 ,并在其基础上做了一些改动,感谢在 CSDN 上的原作者 loveheronly

 

因为舰娘群里有个 dalao 的 bot 托管在我的 VPS 上经常挂,导致我需要经常手动上去重启它。

昨晚被 HJC 聚聚骂醒了说,“劳伦斯你就是懒得写脚本”,“不会就去学呀”。

想来也对,与其次次被人发现挂了以后手动重启还不如去学学怎么写脚本。

于是在百度上博众家之长,便有了这篇东西

 

代码实现


这个 Shell 的作用主要是实现监控某个程序崩溃之后就自动重启。


#!/bin/bash
while true
do
procnum=` ps -ef|grep "Ooyodo"|grep -v grep|wc -l`
if [ $procnum -eq 0 ]; then
/home/lawrence/ooyodo-bot/Ooyodo
fi
sleep 30
done

脚本解读


procnum 用于判断 Ooyodo 这个进程是否在运行。

– eq 0 是 等于 0 的意思 。

这是个循环运行的脚本,每隔 30s 就检查 procnum 的值,如果 procnum = 0 (意为 Ooyodo 这个进程没有运行),则启动 /home/lawrence/ooyodo-bot/Ooyodo

 

运行脚本


脚本写好以后,在运行前需要为它赋予相应的操作权限(此处假设脚本名为 run_start.sh)

chmod 777 run_start.sh

使用以下命令启动

./run_start.sh &

记得加上&,不然窗口会话结束,脚本也会跟着结束。

 

注意事项


如果脚本是在 Windows 下编写的,那么在 Linux 下运行的时候可能提示-bash: ./run_start.sh: /bin/bash^M: bad interpreter: 没有那个文件或目录 ,这是因为 Linux 无法识别 Windows 的DOS 格式。如果遇到 bad interpreter 的错误,请务必对字符做一下转换,方法如下:

1)编辑出错文件
vi run_start.sh

2)查看该格式(报错文件格式是 DOS )
:set ff
3)修改格式
:set ff=unix

4)保存退出
:wq

这时再重新运行脚本,应该就可以正常运行了

设置开机自动启动


 

修改 /etc/rc.local 并在文件末尾添加一行

/home/lawrence/ooyodo-bot/run_start.sh &

(此处替换为脚本所在的路径)

 

后话(另一段脚本)


群里的 dant 聚聚给出了另外一段 Shell 脚本,也能达到同样的效果

此处给出代码,具体就不解释了


#!/bin/bash
while true
do
/home/lawrence/ooyodo-bot/Ooyodo
sleep 3
done

 

首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:

# kill -pid

注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。

*确定要杀死进程的PID或PPID

# ps -ef | grep httpd

结束进程

# kill -l PID

-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功–或许仍然需要先手工杀死子进程,然后再杀死父进程。

给父进程发送一个TERM信号,试图杀死它和它的子进程。

# kill -TERM PPID

*killall命令

killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。

# killall httpd

*停止和重启进程

有时候只想简单的停止和重启进程。如下:

# kill -HUP PID

该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。