重定向、管道与进程

本文深入讲解了进程的概念,包括程序与进程的区别,如何在Windows和Linux下查看与管理进程,以及进程的前后台切换、终止方式和标准输入输出的重定向。通过实际操作示例,帮助读者理解进程管理的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是进程

从Windows说起:

可执行文件 -D:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe

程序和进程的概念

程序(软件)用代码决定程序的行为,存在存储介质里面,比如硬盘。静态的,一直保存在磁盘中

程序运行起来,就是操作系统把存储介质上的可执行文件,加载到内存里面运行,这个运行的程序叫做进程。动态的 、暂时的

ps命令查看进程

不带任何参数:同一个用户同一个终端的进程

-ef参数:e 表示所有,f 表示full-format,尤其是PPID和command内容

后台运行进程

前台进程和后台进程

shell里正在执行的和用户进行交互的进程叫前台进程。举例ps,ls分别为前台进程,时间短。

有的命令执行时间长,比如备份程序,可以在后台执行:加&

示例:vi abc.txt &

后台运行意味着不从标准输入读入字符

后台运行的进程我们叫后台进程,后者后台任务。

进程前、后台切换

列出后台进程jobs

示例:执行  vim abc.txt &

fg <num> 将后台进程调到前台

bg <num>可让进程在后台执行

ctrl+z (暂停)可挂起进程,注意jobs显示的状态是stopped

ctrl+c (终止,取消)

终止进程

进程的两种终止方式

自行终止

  1. 任务执行完成,比如ps
  2. 用户让其退出,比如shell exit
  3. 异常退出,比如 程序里有除以0的代码

用户手动杀死进程

  • kill PID SIGTERM     劝退
  • kill -9 PID SIGKILL    强制
  • ctrl+c  SIGINT
  • 只能是owner和root才能杀死进程

标准输入、标准输出、标准错误

stdin、stdout、stderr:

用户通过终端与shell                                                                       交互shell缺省打开3个文件句柄                                                      进程从stdin读取用户输入                                                                从stdout、stderr输出信息指向同一个设备文件-终端

重定向-标准输出

有的时候,不想输出到终端上(命令结果要处理)

使用shell的一个功能:重定向

ps -ef > out 也可以ps -ef | > out

0 - stdin; | - stdout; 2 - stderr

追加而不是覆盖 >>

重定向-标准错误

 

重定向-标准输入

有时需要从文件里面读取内容,而不是终端设备

演示:实例:rm -i abc.txt <stdin

管道

将前面的ps -ef命令的stdout(本来是输出到终端设备的)重定向到一个临时管道设备里面,

同时将后一个命令grep || 82的stdin重定向到这个临时的管道设备

管道示意图

管道的一些用法

让stdout和stderr同时重定向到管道: python both.py 2>&1 |grep err

连续使用管道:      ps -ef |grep python|grep -v grep

经常需要将一个命令的输出的内容,给另一个命令作为输入的内容进行处理

ps -ef 和grep python

可以分为两步

第一步:ps -ef>tmp.out

第二步:grep python tmp.out

使用管道更方便 ps -ef|grep python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值