也叫终端设备,早期因为计算机比较昂贵,所以一个主机会有多个终端,这些终端本身不具备计算能力,仅仅承担信息的输入与输出工作,运算和处理均由主机来完成。
现在个人计算机也可以运行终端仿真程序来模拟一个终端来工作。
随着计算机的发展,移动终端也有了广泛应用,不仅有可以进行输入输出的工作,也可以进行一定的运算,实现部分系统的功能。
参看
一般进程有 3 个 uid,分别为 ruid(真实用户 ID),euid(有效用户 ID),suid(保存用户 ID)
setuid(uid)
当你是 root 时,可以用这个函数把自己变成 ID 为 uid 的用户,并且不可以返回再成为 root。即你是 root 时,使用这个函数你的 ruid,euid,suid 都变了
seteuid(euid)
但是你用这个函数时,你的 ruid,suid 还是 0,改变的只是你的 euid。这样你可以返回成为 root。
另外有一个设置用户 ID(set uid),这个是对应的档案的 9 个权限中第三个字段。如果一个二进制档案设置设置用户 ID,那么如果非该档案所有者具有该档案的 x 权限,且要执行这个档案,那么执行时生成的进程的 euid 就是该档案的所有者
权限的继承
当使用 fork 子进程的时候,子进程全部继承父进程四个 uid,和父进程 uid 相同;当使用 exec 系列函数时候,会把 suid 置为 euid。
例子说明:
比如登录时,不同的用户获取 bash shell 时,生成的 shell 是不同的。会根据用户的身份信息来生成具有不同权限的 shell。
常驻在内存中的进程。也叫 daemon。
进行工作管理时,每个工作都是目前 bash 的子程序。也就是说不同的终端之间是不可以互相管理的。每个 bash 只能管理自己的工作,而不可以去管理其他的 bash 的工作。
前台:就是出现提示字符让你操作的环境
后台:背着你执行的环境,这里的工作是不可以通过 ctrl+c 来打断的,也就是说你不可以互动的与后台中的工作交互。
后台中的 job 的状态:
在后台里面的工作,他的状态一般有 Stop,Running。
如何讲一个 job 放到后台处理
1.
可以在指令的最末尾加上 & 来将工作添加到后台去处理。
比如:
注意
[1] 8400
这里 1 是工作的 job ID,用来标识一个工作。
8400 这是这个工作对应的进程的 PID
2.
对于当前正在处理的工作可以使用 ctrl+z 来把当前的工作放到后台。
用途:
观察目前后台中 job 的状态
注意这里
[1]- 10314
[2]+ 10833
+:表示的是最近放到后台的 job ID
-:最近最后第二个被放到后台的 job ID
用途:
将后台的工作放到前台来
- fg % jobID
用途:
让工作在背景下的状态变为工作中。因为有的 job 在后台是 Stopped,我们可以用这个指令来让你 Run 起来。
- bg % jobID
注意在后台的 job 是在终端模式下的,并不是在系统的后台中。即若我们是远程连接到 Linux 主机的,当我们脱机之后,在后台的工作都会被中断。所以为了避免这个情况,我们可以使用 nohup 指令。
- nohup[指令与参数] &
- /* 将指令放到系统后台去 */
- nohup[指令与参数]
- /* 将指令放在前台中执行 */
ps 指令
例子:
- ps - l
- /* 只是看自己bash中的任务 */
F:process flag,说明这个进程的总结权限。
S:表示这个进程的状态,主要有
UID/PID/PPID
C:cpu 使用率,单位为百分比
PRI/NI:优先级
PRI(new) = PRI(old) + nice
PRI 越低说明优先级越高。
ADDR/SZ/WCHAN:
TTY:登入者的终端机的位置,若是远程则为 (pts/n)
TIME:使用掉的 CPU 时间
CMD:造成这个进程触发的指令是什么
- ps aux
top 指令
动态观察程序的变换
例子:
第一行(top)显示的信息分别是:
第二行(Tasks)显示的信息分别是:
目前进程的总量,与他们分别都是什么状态
第三行(Cpus)显示的信息是 CPU 的整体负载
第四行与第五行:表示的是目前的物理与虚拟内存的使用情况。
第六行
pstree
形成一个树状的进程关系图。
进程之间是可以互相控制的。可以通过 kill 命令来发送信号。
- kill - signal PID killall - signal指令名称
nice 命令
- nice[ - n数字] command
-n :后面接一个数字,数值的范围 - 20~19
注意一般用户只可以调整自己进程的 nice 值,范围为 0~19,即只会把自己进程的优先级调低。
command:因为执行一个 command 就当于启动了一个子进程,所以这里 nice 就是相当于给这个子进程设置 nice 值。
renice 命令
- reniec[number] PID
调整 PID 的 nice 值为 number
来源: http://lib.csdn.net/article/linux/44860