首页 > 代码库 > linux进程、管道和重定向

linux进程、管道和重定向

1.shell先后使用fork和exec系统调用来执行一个外部命令。

2.在linux系统中,有三个文件会被内核自动打开,分别是stdin、stdout、stderr。

3.进程的属性相关命令:

查看进程的属性 ps [options]

实时监视CPU的活动状态并且交互地控制这些进程 top命令

显示物理内存和swap分区的使用情况 free命令(非实时) 想要持续地监视 free -s 10

4.kill命令:

kill命令是通过向指定进程发送信号,操作系统根据信号来实现对指定进程如何操作。

kill [-signal_number] proc-list

命令kill -l 返回所有信号的号码以及名字的列表

缺省信号,代表终止进程

5.进程和作业的控制:

需要在Linux上执行一些需要很长时间才能完成的工作,而这些工作执行时,又希望做一些其他的工作,这时就要将命令放到后台去执行,通过在命令后加&实现。

作业是一个不运行于前台的进程,并且只能在关联的终端上。

使用fg命令把后台的进程转移到前台执行, fg [%jobID]

使用bg命令吧前台被挂起的命令转到后台后台继续执行,bg[%jobID]

使用jobs命令显示所有挂起的和后台进程的作业号,jobs [option] [%jobID]

6.linux的守护进程:

任何在后台执行的程序都可以称为守护进程,如lpd、smtpd、httpd、inetd

7.linux定时作业调度:

crond守护进程定期检查是否有要执行的作业,如有需要执行的作业吗,便会自动执行。crond守护进程用于检查/var/spool/cron目录中是否存在一个和用户名同名的crontab文件,检查其中列出的执行时间,并在适当的时间提交执行命令。
crontab命令用来创建、编辑、删除crontab文件,每一个用户都可以有一个crontab文件来保存调度信息,使用它运行任意一个shell脚本或者命令,隔一段时间运行一次。

crontab [-u user] -e(-l,-r)

crontab crontabname

crontab文件中每一条目(行)表示一个特定的时间运行作业,格式是:

minute hour day month weekday command

 

at命令允许用户向crond守护进程提交作业,使其在稍后的时间运行。

at -f at.sh 12:30

8.命令行中使用操作符:

command1;command2  --命令的顺序执行

command1&command2&  --命令的并发执行(也就是每个命令都在后台执行)

commond1&&command2  --只有前面的命令执行成功,后一条命令才执行

command1||command2  --只要一条命令执行成功,后面的命令就不执行了

command1|command2   --将command1的标准输出连接到command2的标准输入

9.linux系统启动、关闭和进程层次结构:

查看进程的层次关系,用ps -ef 命令和pstree命令。

用shutdown或halt命令关闭linux系统。

10.输入输出重定向:

command < filename

command > filename  --重定向可能覆盖文件,用command >> filename可避免,将输出添加到该文件末尾。

通过使用文件描述符,在bash、POXIS shell 中标准输入和标准输出能够分别使用 0<, 1>, 2>操作符来重定向, grep "Joson" students 1> output.out 2> output.err

注意: 在shell命令行的解析中,重定向操作按照从左到右的顺序进行,

sort 0< students 1> students.sort 2> students.err

sort 2>students.err 0< students 1> students.sort  两者的区别

 

   cat ch1 ch2 ch3 1> ch.out.err 2>&1

   cat ch1 ch2 ch3 2> ch.out.err 1>&2   表示标准输出和错误输出都到一个文件中。

linux进程、管道和重定向