由一个自动化脚本运维展开的思考

今天分享一个思路,如何通过脚本集中管理程序的启停。减少人工的介入。

例子

好的,这里有一个基本的shell脚本示例,你可以根据你的具体需求进行修改。

启动脚本(start.sh):

#!/bin/bash
./test_server_1 &
PUB_PID=$!
./test_server_2 &
REP_PID=$!
./test_client_2 &
REQ_PID=$!
./test_client_1 &
SUB_PID=$!

echo $PUB_PID > pub.pid
echo $REP_PID > rep.pid
echo $REQ_PID > req.pid
echo $SUB_PID > sub.pid

这个脚本会启动四个程序,并将它们的进程ID保存到对应的.pid文件中。

停止脚本(stop.sh):

#!/bin/bash
kill $(cat pub.pid)
kill $(cat rep.pid)
kill $(cat req.pid)
kill $(cat sub.pid)

rm pub.pid
rm rep.pid
rm req.pid
rm sub.pid

这个脚本会读取.pid文件中的进程ID,然后发送SIGTERM信号来停止这些进程。最后,它会删除.pid文件。

在使用这些脚本之前,你需要确保它们有执行权限。你可以使用chmod +x start.sh stop.sh命令来添加执行权限。然后,你可以使用./start.sh来启动程序,使用./stop.sh来停止程序。

总结

我们在Linux上执行的内容,其根本都是对文件的操作,也就是说我们的程序的信息,也是存储在Linux下的某个文件下的,我们这里使用了每次启动时系统分配的进程ID ,通过id 来告诉系统期望的操作。

因此可以扩展,如果我们需要,在开始运行前先编写好相关的脚本,真的可以为后期的调试,运维剩下不少力气。

特别是当你需要面对很久之前的代码项目时。

  • 读完善的readme,要比看代码硬啃功能更好。
  • 借用完善的cmake,要比自己编译再去解决库依赖好。
  • Makefile写好之后,make 系列指令,要比自己一个模块一个模块的cp 程序更好。

分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za

你可能感兴趣的:(Docker,Liunx,运维,自动化)