在linux系统中:触发任何一个事件,系统都会定义为一个进程,并且给这个进程一个ID号,称为PID,同时根据启动这个进程的用户与相关属性关系,给这个PID一组有效权限设置,从此以后,这个PID能在系统上进行的动作就与PID的权限有关了。
那么如何产生进程ID呢?“执行一个程序或命令”,就可以触发一个事件而获取PID。
进程除了有PID以外还有其它组成部分,有代码段(用来存放程序的执行代码,该代码是二进制文件)、变量(存储执行程序中的变量)、库文件、被操作的文件内容。由以上我们可以看出进程其实就是给程序一块可以执行的土壤。
子进程和父进程
我们以一个用户登录系统时,会获得一个进程号即PID,当我们登录系统后,会获取一个bash的Shell,然后我们用它去执这个bash提供的借口去执行另一个命令,例如 ls或/user/bin等,那些另外执行的命令也会被触发成为PID,那个PID就是子进程而在bash环境下执行的就是父进程。
作业管理
作业管理是在bash环境下使用的,也就是说,当我们登录系统获取bash shell之后,在单一终端界面下,同时管理多个作业。这里需要注意的是:管理作业时,其实每个作业都是当前bash的子程序,即彼此之间是有关联的。我们无法由作业管理的方式有tty1的环境去管理tty2的bash。
前台与后台
前台:您可以控制的作业成为前台作业(foreground)
后台:在内存可以自行运行的作业,您无法直接控制它,除非以bg/fg等命令将该作业调出来。
作业管理的相关命令
& :在命令后面加上&符号,可以将命令放到后台运行。
例如 ls & 需要注意的是后台作业不会输出到界面 它会把操作结果以邮件的方式发送到发起这个命令的用户的邮箱里,我们可以通过mail命令去查看它。
ctrl+z :将当前作业放到后台暂停。例如 但我们在用Vim编辑一文件时,发现有一需要在编辑器中用的文件不知道放在了那里,此时我们是否需要退出编辑器呢?不需要!我们只要按ctrl+z即可。这样就可以将编辑放到后台中等待了 。
jobs【-lrs】:观察当前后台作业状态
-l : 除了列出作业号外,同时列出PID
-r :仅列出后台正在运行的作业
-s :仅列出后台正在暂停的作业
注释:加上-l参数,在输出信息中,如果在命令的在作业的序列号前有+ — 号时 +表示默认的作业
fg : 将后台作业拿到前台
fg %jobnumber
%jobnumber 作业的号码。注意%可有可无,不加%jobnumber表示取出默认的作业。
bg : 让作业在后台运行
用法和fg一样。注释:在后台停止运行的作业启动后使用jobs命令查看会发现改作业后会出现&符号。
kill : 管理后台作业
-l :列出当前kill能够使用的信号。
signal :表示后面的作业什么指示用man 7 singal 可知。 例如 kill -SIGTERM %1
-1 :重新读取一次参数的设置文件
-2 :
-9 :立即强制删除一个作业
-15 :以正常的程序方式终止一项作业。注意与-9的区别。
与之相关的还有killall pkill.
ps : 列出系统中的进程信息。
o : 只显示选定字段 例如 ps axo pid
a : 显示与终端相关的进程
u :显示由哪个用户发起的进程,后跟用户名
x :与a相反
注释:以上选项均不加 - 。ax组合使显示系统的所有进程信息。
pgrep
pidof
nice 修改进程的优先级
如nice -n 5 commond 5为修改后的优先级别,且该情况用于命令启动前,如果是在命令启动后则 使用
renice 如renice 5 -p PID
变量
set 查看所有变量
env或printenv 查看全局变量
echo $VARIABLE 查看某一个变量
本地变量的声明 VARIABLE=VALUE
环境变量的声明 export VARIABLE=VALUE 或 declare -x VARIABLE
















