教程五

使用Google翻译翻译自: http://www.ee.surrey.ac.uk/Teaching/Unix/unix5.html


5.1文件系统安全(访问权限)

在您的unixstuff目录中,键入

%ls -l(l 代表 long listing!!)

您将看到,您现在可以获得有关目录内容的详细信息,类似于下面的示例。

文件和目录访问权限

每个文件(和目录)都具有相关的访问权限,可以通过键入ls -l来找到。此外,ls -lg还提供了哪个组拥有该文件的附加信息(以下示例中为beng95):

-rwxrw-r-- 1 ee51ab beng95 2450 Sept29 11:52 file1

左侧列是由符号d,r,w,x, - 和偶尔出现的s或S组成的10个符号串。如果d存在,则它将位于字符串的左端,并指示一个目录:否则 - 将是字符串的起始符号。

其余9个符号表示权限或访问权限,并被分为三组。

符号r,w等,具体取决于它们是指简单文件还是目录,具有稍微不同的含义。

对文件的访问权限。

目录访问权限

因此,为了读取文件,您必须对包含该文件的目录具有执行权限,也需要对包含该目录的目录具有执行权限,依此类推。

一些例子

-rwxrwxrwx 每个人都可以读取,写入和执行(并删除)的文件。
-rw ------- 只有所有者可以读写的文件 - 其他任何用户都
不能读取或写入,也没有人拥有执行权(例如您的
邮箱文件)。

5.2更改访问权限

chmod(changing a file mode)

只有文件的所有者可以使用chmod来更改文件的权限。chmod的选项如下

符号 含义
u
用户(user)
g
组用户(group)
o
其他用户(other)
a
所有(all)
r
读(read)
w
写(write)和删除
x
执行(execute)和访问目录
+
添加权限
-
减少权限

例如,要删除组用户和其他用户对biglist文件的读写和执行权限,请键入

%chmod go-rwx biglist

其他权限不受影响。

要给所有人biglist 文件的读写权限

%chmod a+rw biglist

练习5a

尝试更改文件science.txt和目录backups的访问权限

使用ls -l检查权限是否已更改。

5.3进程和作业

进程是由唯一的PID(进程标识符)识别的可执行程序。要查看您的进程的PID和状态等信息,请键入

%ps

进程可能在前台,在后台,或被挂起。通常,shell将不会返回UNIX提示,直到当前进程完成执行。

一些进程需要很长时间才能运行,因此一直占用终端。将需要长时间运行的进程放到后台执行的作用是在终端立即返回UNIX提示符,并且可以在原始进程继续执行其他任务。

运行后台进程

要将进程放到后台处理,可以在命令行的末尾键入。例如,命令sleep等待给定的秒数,然后继续。键入

%sleep 10

这将等待10秒钟,然后返回命令提示符%。在返回命令提示符之前,除了等待之外,您不可以执行任何操作。

要在后台运行sleep进程,请键入

%sleep 10 &

[1] 6259

&在后台运行sleep进程,并直接返回提示符,在等待其执行完成的过程中,可以让你运行其他程序。

上述示例中的第一行是用户输入的; 下一行是由机器返回的,包含了作业号和PID信息。作业号(从1编号)包含在方括号中,后跟后台进程的PID,并在后台进程完成时通知用户。后台执行对于需要很长时间才能完成的工作进程很有用。

将当前的前台进程放到后台执行

在提示符下,键入

%sleep 1000

您可以通过键入^Z来暂停在前台运行的进程,按住[ Ctrl ]键并键入[ z ]。然后把它放在后台,键入

%bg

注意:不要将需要用户交互的程序放到后台执行,例如vi

5.4列出挂起进程和后台进程

当进程运行,后台运行或挂起时,它将与作业号一起包含到作业列表中。要检查此列表,请键入

%jobs

作业列表的例子可能如下所示

[1]Suspended sleep 1000
[2]Running netscape
[3]Running matlab

要重新启动(前台运行的)挂起的进程,请键入

%fg %jobnumber

例如,要重新启动sleep 1000,请键入

%fg %1

在没有作业编号的情况下键入fg会使最后一个暂停的进程在前台执行。

5.5杀死一个进程

kill(终止或信号通知一个进程)

有时候有必要杀死一个进程(例如,当执行程序处于无限循环中时)

要杀死在前台运行的作业,请键入^C(Ctrl+c按键)。例如,运行

%sleep 100
^C

要杀死挂起进程或后台进程,请键入

%kill %jobnumber

例如,运行

%sleep 100 &
%%jobs

假设其作业编号为4,键入

%kill %4

要检查这是否有效,请再次查看作业列表以查看进程是否已被杀死。

ps(process status)

或者,可以通过查找进程号(PID)并使用kill PID_number来杀死进程

%sleep 1000 &
%ps

PID TT S TIME COMMAND
20077 pts / 5 S 0:05 sleep 1000
21563 pts / 5 T 0:00 netscape
21873 pts / 5 S 0:25 nedit

要杀死进程sleep 1000,键入

kill 20077

然后再次键入ps以查看它是否已从列表中删除。

如果进程拒绝被杀死,则使用-9选项,即,键入

%kill -9 20077

注意:不可能杀死其他用户的进程!

总结

命令 含义
ls -lag 列出所有文件的访问权限
chmod [ options ] file 更改文件的访问权限
command& 在后台运行command命令
^C 杀死在前台运行的作业
^Z 挂起在前台运行的作业
bg 将挂起的工作放到后台
jobs 列出当前的作业
fg %1 将编号为1的作业放到前台运行
kill %1 杀死编号为1的作业
ps 列出当前的进程
kill 26152 杀死进程号为26152的进程