博客
关于我
进程列表、协程与后台
阅读量:593 次
发布时间:2019-03-11

本文共 1047 字,大约阅读时间需要 3 分钟。

Shell命令执行模式解析

命令列表

在shell环境中,用户可以通过命令列表一次性执行多个命令。命令列表的形式如下:

pwd ; ls ; cd /etc ; ls -l ; pwd

执行该命令会依次输出当前工作目录、列表文件夹内容、进入/etc目录并列出详细信息以及最终的当前工作目录。

注意:命令列表采用;分隔,命令执行顺序依次进行。

进程列表

为了生成一个子shell并执行一组命令,可以使用进程列表的方式。子shell的启动可以通过将命令列表包裹在圆括号()中实现:

(pwd ; ls ; cd /etc ; ls -l ; pwd)

在执行上述命令后,可以通过echo $BASH_SUBSHELL查询子shell的PID,通常会发现子shell是一个独立的进程。

后台模式

在shell中,后台模式可以将一组命令或单个命令放入后台执行。命令分组的方式如下:

pwd ; ls ; cd /etc ; ls -l ; pwd &

注意:使用&符号表示后台执行,只有最后一个命令会被放入后台。

后台进程示例

在将命令列表放入后台执行时,执行过程会输出后台作业号和PID。例如:

(pwd ; ls ; cd /etc ; ls -l ; pwd )

执行后会立即输出类似信息:

[1] 6734

随后,当子进程完成执行时,终端会显示完成状态,并输出最终结果。

后台作业管理

可以通过jobs命令查看所有后台进程,使用-l参数可以列出详细信息:

jobs -l

注意jobs命令会列出所有当前终端的后台作业。

子进程

在shell中,可以通过生成子进程的方式执行命令。子进程的方式与进程列表类似,但需要使用{}包裹命令:

coproc name { pwd ; ls }

子进程示例

通过上述命令可以看到子进程的PID。可以通过echo $name查看子进程的名字。

子进程终止

可以通过kill -s name终止子进程。例如:

coproc foo { sleep 10 }kill -s foo

注意:子进程的终止需要确保子进程已启动。

总结

通过以上方法,可以在shell环境中灵活管理命令的执行方式。无论是单一命令还是多个命令组,可以通过命令列表、进程列表或后台模式进行操作。通过合理使用jobscoproc命令,可以有效管理后台进程和子进程。

提示:使用jobs -l可以查看当前终端的后台作业,coproc命令适用于需要在子进程中执行命令且不影响当前终端会话的场景。

转载地址:http://yfatz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现all permutations所有排列算法(附完整源码)
查看>>
Objective-C实现all subsequences所有子序列算法(附完整源码)
查看>>
Objective-C实现AlphaNumericalSort字母数字排序算法(附完整源码)
查看>>
Objective-C实现alternate disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现alternative list arrange备选列表排列算法(附完整源码)
查看>>
Objective-C实现An Armstrong number阿姆斯特朗数算法(附完整源码)
查看>>
Objective-C实现anagrams字谜算法(附完整源码)
查看>>
Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
查看>>
Objective-C实现area under curve曲线下面积算法(附完整源码)
查看>>
Objective-C实现argmax函数功能(附完整源码)
查看>>
Objective-C实现arithmetic算术算法(附完整源码)
查看>>
Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
查看>>
Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
查看>>
Objective-C实现average mean平均数算法(附完整源码)
查看>>
Objective-C实现average median平均中位数算法(附完整源码)
查看>>
Objective-C实现average mode平均模式算法(附完整源码)
查看>>
Objective-C实现avl 树算法(附完整源码)
查看>>
Objective-C实现AvlTree树算法(附完整源码)
查看>>