cli孤儿进程的救赎

博主半路自学 Linux 时遇到孤儿进程问题。编译大型程序时,为防止关闭终端影响进程,学会用 nohup、disown 等将程序踢成孤儿进程。但之后不知进程运行情况,经研究,可在程序运行前用 nohup 重定向输出,运行途中用 disown 踢成孤儿,用 reredirect 重新获取输出。

由于半路自学linux,会很多很奇葩的需求,孤儿进程就是其中之一

当编译一个大型的程序,编译到一半,又要走开,又怕不小心关闭了,后来学会 nohup,ctrl+z,& ,disown 。 就把程序直接踢成孤儿,关了终端,轻轻松松的去干其他事情。

结果问题来了,进程是孤儿了,老实运行了,但是不是事先nohup设置好输出重定向的,回来了,不知道进程运行咋样了。

研究了很久,先预设个前提,无需干涉的运行进程。需要看输出。

1 、有计划的 nohup类,先重定向输出文件。这个必须程序运行之前设置。

2、 程序运行途中,想踢成孤儿进程,避免终端关闭影响程序,则需要用disown踢。踢完想重新获取输出,需要使用个小工具 reredirect。

github【传送门】

该程序编译和运行都相对简单,就不多赘述了。

分享经验不易,转载注明出处

CLI(Command Line Interface,命令行界面)进程通常指运行在终端或控制台中的交互式程序,允许用户通过输入文本命令与系统或应用程序交互。以下是关于 CLI 进程的解析: ### **1. CLI 进程的基本概念** - **交互式进程**:用户通过终端输入命令,程序解析并执行相应操作。 - **非交互式进程**(脚本模式):CLI 程序也可以运行在后台,接受参数或脚本输入,无需人工干预。 - **常见用途**: - 系统管理(如 `bash`, `zsh`) - 开发工具(如 `git`, `npm`, `python`) - 服务器管理(如 `ssh`, `docker`) ### **2. CLI 进程的工作流程** 1. **启动进程**: - 用户输入命令(如 `python script.py`),Shell 解析命令并启动进程。 - 也可以由其他程序(如 `cron` 或 `systemd`)调用。 2. **输入处理**: - 读取标准输入(`stdin`)或命令行参数(`argv`)。 - 通过 `getopt`、`argparse`(Python)等库解析参数。 3. **执行逻辑**: - 根据输入调用相应函数或模块。 - 可能涉及文件 I/O、网络通信、数据处理等。 4. **输出结果**: - 标准输出(`stdout`)或标准错误(`stderr`)。 - 可能返回退出码(`0` 表示成功,非 `0` 表示错误)。 ### **3. 常见的 CLI 进程实现方式** - **C/C++**: ```c #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, %s!\n", argv[1]); return 0; } ``` - **Python(`argparse` 库)**: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("name", help="Your name") args = parser.parse_args() print(f"Hello, {args.name}!") ``` - **Bash 脚本**: ```bash #!/bin/bash echo "Hello, $1!" ``` ### **4. CLI 进程的调试与优化** - **调试**: - 使用 `gdb`(C/C++)、`pdb`(Python)调试。 - 检查日志(`stderr` 或 `syslog`)。 - **优化**: - 减少不必要的 I/O 操作。 - 使用多线程/多进程(如 `multiprocessing` 库)。 ### **5. 典型应用场景** - **系统管理**:`top`, `ps`, `netstat`。 - **开发工具**:`git`, `docker`, `kubectl`。 - **数据处理**:`awk`, `sed`, `jq`。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值