linux 重定向 进程,[Note] Linux学习笔记5-6 进程、重定向和管道

Note 5 Linux 进程

什么是进程?

An executing program = A process

当你执行一个外部命令(内部命令是shell进程的一部分,不需要创建进程)时,Linux系统会为之创建一个进程,命令完成之后会撤销它

进程的创建和终止是linux系统处理外部命令所采用的唯一机制

Linux通过系统调用fork创建一个新的进程,该操作建立原进程内存的完全拷贝,然后系统调用exec来使要执行命令的代码覆盖新进程。

(ps 命令可以用来查看进程的属性和状态,具体请自行查阅)

进程执行和作业控制

前台执行:当输入命令并开始执行,在当前命令结束前,你不能执行任何命令

后台执行:在执行命令的同时,你可以看到哦啊shell提示符出现,并执行其他命令

在命令最后添加一个 ‘&’符号,可以使命令后台执行,此时会输出这样一行信息“[1] 23245” 中括号里的数字为作业号(job number),后面的数字为进程号(PID)

作业是不运行在前台的进程,只能在关联终端上访问

(fg命令可以将后台进程转移到前台,用法:fg %jobid,使作业号为jobid的前台进程继续执行,或者转移到前台)

(Ctrl-C可以中止一个前台命令)

(Ctrl-Z可以挂起一个前台进程)

(bg命令可以把挂起的进程转移到后台继续执行, bg %jobidlist)

(jobs命令显示指定的被挂起进程或后台进程的状态)

(at命令使指定命令序列在指定时刻执行)

(batch命令指定作业在系统负载较轻时运行)

(kill命令可以中止后台进程)

(sleep n 命令可以使正在执行的进程睡眠n秒)

有一种特殊的进程,守护进程(daemon)是运行于后台的系统进程,向用户提供各种类型的服务和执行系统管理任务,例如smtpd、httpd、inetd

在一个命令行输入多条命令,并在每条命令末尾加上分号,可以顺序执行这些命令,若以‘&’连接多条命令则并行执行它们,例如

顺序执行:命令1; 命令2; 命令3;

并行执行:命令1& 命令2& 命令3&

使用&&和||可以有条件的执行命令,例如:

命令1 && 命令2 代表如果命令1成功则执行命令2

命令1 || 命令2 代表如果命令1失败则执行命令2

Note 6 重定向和管道

重定向

在默认状态下,命令的stdin 为 keyboard; stdout和stderr为屏幕

我们可以使用重定向运算符,将命令的输入和输出重定向到文件

输入重定向,‘

语法:command < inputfile

命令的输入来自inputfile而不是键盘

输出重定向,‘>’

语法:command > outputfile

命令的输出写到文件outputfile,而不是显示器

两者可以同时使用,比如

command < inputfile > outputfile

command > outputfile < inputfile

另外,linux内核将一些小的整数关联到每个已打开的文件上,称为文件描述符

stdin--0 stdout--1 stderr--2

所以我们可以这样用:

command 0< inputfile 等价于 command < inputfile

command 2> errorfile 1>outputfile

command 1> file 2> &1

(重定向的顺序是从左到右)

(2> &1含义是将错误信息输出到和1相同的文件)

默认情况下,输出和错误重定向会覆盖目标文件的内容

如果需要追加而不是覆盖,则使用>>运算符,而不是>运算符

注意,exec命令有些特殊,exec output 将shell之后所有命令输出到output文件里

管道

Linux允许一条命令的输出作为另一条命令的输入

语法: 命令1 | 命令2 | 命令3 ...

命令1的输出作为命令2的输入,之后同理

例子:

ls -l | grep ”somedata“

grep “data” < inputfile | lpr -Pspr

who | sort | grep "name" | mail -S "content" xxx@xx.com

(第三条命令将who的输出排序,找到其中包含name的行,并和content一起发送给xxx@xx.com)

当你想要把命令的输出既输出到文件,又通过管道传递,那么你需要tee命令

语法: tee [options] filelist

作用: 将输出送到标准输出和filelist中

用法: command1 | tee file1 file2 | command2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值