在Unix系统中,进程是通过系统调用fork创建的。系统调用fork创建调用进程的一个副本,新创建的这个进程称为子进程(child),创建它的进程称为父进程(parent)。
子shell运行时,父shell通常处于睡眠状态。系统调用wait导致父进程挂起直至它的一个子进程终止,并确保进程正常终止。
要清除僵死进程必须重启系统。
子shell通过系统调用exec实现运行用户输入的命令的功能。
新程序随时可以通过调用exit终止。子进程终止时会向父进程发出一个信号(sigchild)并等待父进程接受它的退出状态。退出状态是一个0 - 255之间的数,退出状态为0说明程序执行成功,不为0则表示发生了某种错误。
fork
|
wait
|
exec
|
exit
Bourne shell、Bash和Korn shell把退出状态保存在变量“?”中,可以用此命令获取结果:echo $?;C/Tc shell把退出状态保存在变量“status”中,可以用此命令获取结果:echo $status。
进程可以通过Ctrl+C或Ctrl+\组合键,或者通过kill命令来终止。
kill命令是个内置shell命令,它通过PID来终止进程,如果使用作业控制的话,也可以通过作业号终止作业。
释疑命令:sleep 60&,睡眠进程持续60秒,&符号则是设置程序在后台运行。
UID 真实用户标识,是口令文件的第3个字段;
GID 真实用户组标识,是口令文件的第4个字段;
EUID 有效用户标识
EGID 有效用户组标识
EUID、EGID决定了进程读、写或执行文件时的访问权限。如果进程的EUID与文件所有者的真实UID相同,则进程具有文件的所有者访问权限;如果进程的EGID和真实GID相同,则进程拥有所有者的组特权。
可以用id命令查看uid、gid
可以通过把EUID或EGID改为另一个所有者的ID号而使您拥有其他用户的进程;把EUID或EGID改为另一个所有者的程序称为setuid或setgid程序。
umask命令用于从当前掩码中除去某些权限。
一开始掩码是000,即默认情况下,目录权限设为777(rwxrwxrwx),文件权限是666(rw-rw-rw-)。大多数系统会通过程序/bin/login或初始化文件/etc/profile把umask的值设为022。目录和文件都会从它的默认权限中减去umask的值。
要改变单个目录或文件的权限,应该使用chmod命令,chmod的符号含义:r=read,值4,w=write,值2,x=execute,值1,u=user,g=group,o=others,a=all。
每个文件仅有一个所有者且只有所有者或超级用户才能使用chmod命令改变文件或目录的权限。
要查看文件的权限,使用这个命令:ls -l filename
文件权限由9个二进制位组成,每三位为一组。第一组控制文件所有者的权限,第二组控制文件的组权限,最后一组控制所有其他人的权限,文件权限保存在它的inode的mode字段中。
阅读(1152) | 评论(0) | 转发(0) |