linux后台运行python程序,查看后台命令,结束后台任务,前、后台任务切换,nohup.out维护
1. 后台运行代码命令
nohup python -u ***.py >***.log 2>&1 &
#生成后台任务[jobnum] PID
[1] 25282
nohup 加在命令的最前面,表示不挂断的运行命令
-u 不缓存,立即加载终端数据
.log 终端输出的数据,不添加将自动生成nohup.out文件
2>&1 将错误内容重定向输入到标准输出中去
& 加载命令的最后面,表示这个命令放在后台执行
2. 查看后台命令
jobs 查看当前终端后台执行的任务
ps 查看瞬时进程的动态,可以看到别的终端的任务
3. 结束后台任务
kill
(1)通过jobs命令查看jobnum,然后执行 kill %jobnum
如果没有退出客户端界面,可以先通过 "jobs"命令查看程序是否在运行,此时只有序号没有PID号;
输入命令 "jobs -l" 会显示程序的PID号,然后通过"kill -9 PID"杀死程序;
输入命令 “jobs” 查看程序是否被杀死。
(2)通过ps命令查看进程号PID,然后执行 kill %PID
如果退出过客户端界面,输入 "jobs"命令查不到正在运行的程序;
输入 "ps ux"来查看所有程序的进程号PID,然后再通过 "kill -9 PID"杀死程序;
输入 "ps ux"来查看程序是否被杀死。
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了
4. 前、后台任务切换
fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
Ctrl + z
将一个正在前台执行的命令放到后台,并且处于暂停状态
bg
将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。
5. nohup.out维护
nohup.out会一直增加内容,因此就有了不停止服务直接,清空nohup.out文件的方法。
两个可以不用停止WEB服务就可以清空nohup.out的命令。
第一种:
cp /dev/null nohup.out
第二种:
cat /dev/null > nohup.out
6. 报错
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found
程序的编译器的版本是比较低,缺少GLIBCXX_3.4.22
(1)查找包含 libstdc++.so 的文件
find / -name "libstdc++.so*"
(2)查看其中高版本是否含有GLIBCXX_3.4.22
strings /opt/conda/lib/libstdc++.so.6.0.29 | grep GLIBCXX
(3)cd 到 /opt/conda/lib/文件夹中
(4)将高版本文件复制目标文件夹中
cp libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
#移动使用mv命令
mv libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
(5)重新建立软连接
cd /usr/lib/x86_64-linux-gnu/
rm libstdc++.so.6 #删除
ln libstdc++.so.6.0.29 libstdc++.so.6 #软连接