基础命令学习之ps 与 pkill 与 nohup 与 2>&1 &

查找文件的运行情况

bash 复制代码
ps aux |grep xxx

精准杀死程序

bash 复制代码
pkill -f "python check.py"

对于&来说,并不能保证它稳定在后台运行!

比如

bash 复制代码
# 后台运行ROS节点check.py,终端可继续操作
python check.py &  
# 输出示例:[1] 12345 ([1]是作业号,12345是PID)

# 查看后台运行的进程
jobs  # 列出当前终端的后台作业
# 输出示例:[1]+ Running                 python check.py &

# 将后台进程调回前台(替换作业号1)
fg 1  

# 终止后台进程(替换PID 12345)
kill 12345

如果关闭了终端,仍然是会关闭程序的。

所以怎么保证关闭了终端还能一直运行呢?通过nohup + &实现。

bash 复制代码
nohup python check.py &  # 即使关闭终端,check.py仍运行

&& ||

前一个是都执行,后一个是执行前一个,如果失败就执行后一个。

>

重定向

rosnode list > node.txt

把输出覆盖的给到node.txt

>>

追加式

rosnode list > node.txt

把输出追加的给到node.txt

2>&1

把正确或者错误的所有输出都进行输出。

结合> >>来存到文件中:

python check.py > node.txt 2>&1

注:无论是用>还是>>都只有程序结束之后才能看到输出信息。

那怎么能得到那种实时的效果呢?(原因是Python 输出缓冲:默认情况:Python 输出到文件时会启用「块缓冲」(攒够约 4KB 数据才写入文件),导致日志不会实时显示;)

加上-u的配置即可。

bash 复制代码
python -u check.py >> node.log 2>&1

终极命令:

cpp 复制代码
python -u check.py > check_$(date +%Y%m%d_%H%M%S).log 2>&1 &

tail -f xxx.log

这样就能一遍在后台运行,同时又可以随时打印log情况了

相关推荐
Wang's Blog10 小时前
Java 项目实战: 外卖平台-删除分类的关联校验与自定义业务异常
java·服务器·项目开发
zly350011 小时前
VMware Converter Standalone 物理机转化为虚拟机后源1硬盘变成了2个硬盘(2个硬盘文件)虚拟机无法启动。
linux·运维·服务器
学习中的码虫11 小时前
网络编程5
服务器·网络
GPU实战笔记11 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
AI职业加油站12 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间13 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
sunoo-22913 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Purple Coder14 小时前
stm32
学习
边境悍匪14 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring