我的问题背景是:需要在一个私有云中部署一套python程序,而在私有云中分配了十几台机器跑改程序,作为开发人员的我,第一次使用了Linux后台运维工具:jumpserver,它通过网页的形式批量管理你所需要管理的机器,想了解的可以自行百度一下,下面开始我的主题:
一开始,我写的python程序,在3台机器中并行,没有任何问题,而放到十几台机器上跑之后,就跑不动,因为每一套程序都访问了云rds中的同一张表,而我一开始没有在程序中考虑这个问题,所以,后面在jumpserver中跑起来后,数据库一直没有处理成功的反馈,我以为是程序启动有问题,然后就开始我的linux命令之旅了:
-
首先,在jumpserver中的终端中,进入每一个机器中运行:
ps -ef|grep python3
这个命令,它可以显示该机器所有运行的所有进程,发现每个机器都没有运行我的python程序,但是在jump server这个平台并看不导程序中pirnt打印的信息。 -
接下来,我只有重新运行改程序用以下命令: 其中,
1. 最后一个“&”表示后台运行程序 2. “nohup” 表示程序不被挂起 3. “python”表示执行python代码 4. “-u”表示不启用缓存,实时输出打印信息到日志文件(如果不加-u,则会导致日志文件不会实时刷新代码中的print函数的信息) 5. “test.py”表示python的源代码文件 6. “test.log”表示输出的日志文件 7. “>”表示将打印信息重定向到日志文件 8. “2>&1”表示将标准错误输出转变化标准输出,可以将错误信息也输出到日志文件中(0-> stdin, 1->stdout, 2->stderr)
-
然后再运行:tail -f ~/test.log,就可以查看改程序运行的日志了。
-
根据日志显示的信息,发现是机器中没有程序运行所需要的环境,所以又开始再linux中安装一些python包了,因为安装python工具包需要用pip,所以先安装pip(而我是python3环境),依次运行如下命令:
1.apt-get update
2.apt-get install python3-pip(安装pip3)
3.pip3 install tensorflow==1.5等等,
上面的命令可以根据需要在前面加上sudo; -
再次运行2步骤中的命令,就成功启动了!!!
最后在放几个在Linux中运维 中需要用的几个命令:
-
jobs命令
功能:查看当前终端后台运行的任务 -
ps
功能:查看当前的所有进程
上图中,又一个python程序在后台运行,但是光执行ps和jobs命令的话都查不出来,要加强版的ps+++命令才可查。
注意:ps -aux | grep “test.sh” #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 -
kill
kill -9 xxxx
其中xxxx表示进程号。也可通过以下的命令来杀死进程:
(1)通过jobs命令查看jobnum,然后执行 kill %jobnum(2)通过ps命令查看进程号PID,然后执行 kill %PID
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了