日志对于系统的安全来说非常重要,它记录了系统每天发生的各种各样的事情,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志主要的功能是审计和监测。它还可以实时地监测系统状态,监测和追踪侵入者。Linux 的所有日志文件都在/var/log下。默认情况下没有记录FTP的活动,用户可以通过修改/etc/ftpacess让系统记录FTP的一切活动。
Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错误日志。
连接时间日志:连接时间日志由多个程序执行,把记录写入/var/og/wtmp和/var/run/utmp,使系统管理员能够跟踪谁在何时登录到系统。
进程统计日志:由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志:各种系统守护进程、用户程序和内核通过向文件/var/og/messages报告值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志。
在Linux系统中所有运行的程序都可以称之为进程,这些进程都是互相关联的。在Linux中,除了初始化进程外的所有进程都有一个父进程。进程的一个比较正式的定义是:在自身的虚拟位址空间运行的一个单独的程序。进程由程序产生但不是程序,程序是静态的,而进程是动态的。
学习目标 学会使用 logrotate 指令来管理 log 日志文件
语法 logrotate [-可选参数] [配置文件]
功能说明 logrotate 指令可用来管理系统的 log 文件。一般系统是根据默认的 logrotate的配置文件/etc/logrotate.conf 中的配置,来决定系统经过多长时间后自动进行一次 logrotate工作。使用logrotate指令,用户可以通过指定配置文件后参数来设置定期管理的时间间隔,以及删除和压缩等处理。
参数说明 可选参数及其说明如下:

基础应用
范例666 为logrotate指令指定新的配置文件。
[root@localhost ~]# logrotate /root/newlog.config
[root@localhost ~]#
执行指令“logrotate /root/newlog.config”将为logrotate指定新的配置文件/root/newlog.config。
学习目标 能通过 ipcs 指令来显示当前系统的进程通信的相关信息,了解进程与线程的关系以及各进程间如何进行通信
语法 ipcs [-可选参数]
功能说明 Linux 是一款多任务的操作系统,系统中的每个线程都可能由一个或多个进程来组成,它们之间的信息通信可通过文件形式、内存共享、信号量、邮箱、管道以及消息队列等来进行。Ipcs指令就是用来显示各通信方式的使用状态信息的工具。使用ipcs指令加各参数可选择显示的通信方式信息。
参数说明 可选参数及其说明如下:

基础应用
范例667 显示系统进程间通信的状态。
[root@localhost ~]# ipcs //显示进程间通信
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 458752 root 644 790528 2 dest
0x00000000 491521 root 644 790528 2 dest
0x00000000 524290 root 644 790528 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
[root@localhost ~]#
学习目标 能通过 jobs 指令来查询当前系统的后台作业信息
语法 jobs [-可选参数] [字符串]
功能说明 jobs 指令可用来显示系统中正在运行的所有后台作业的信息,也可通过进程号或指定指令的开头字符串来显示指定的作业信息。这里的作业相当于系统的线程。
参数说明 可选参数及其说明如下:

基础应用
范例668 通过指定指令的开头字符串来显示作业信息。
[root@localhost ~]# jobs cat //显示进程间通信
[1] – Stopped cat
[root@localhost ~]#
学习目标 了解 kill 指令的信号机制,掌握 kill 指令杀死进程的方法
语法 kill [-可选参数] [进程号]
功能说明 kill 指令不仅可以用来杀死指定的进程,还可以用来显示 kill 所能传送的所有信号。Kill指令杀死进程,就是通过发送指定的信号到相应进程来实现。
不指定信号时将发送SIGTERM(15)终止指定进程。若仍无法终止该程序可用“-KILL”参数,其发送的信号为SIGKILL(9),将强制结束进程。使用ps指令或jobs指令可以查看进程号。root用户能影响任何用户的进程,非root用户只能影响自己的进程。
参数说明 可选参数及其说明如下:

基础应用
范例669 显示kill全部的信号名。
[root@localhost ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1
35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5
39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9
43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13
47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-14 50) SIGRTMAX-13
51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9
55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5
59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1
63) SIGRTMAX
[root@localhost ~]#
现在对kill所能传送的所有信号介绍如下:
SIGHUP(1):控制终端上检测到挂断或控制线程死亡;SIGINT(2):交互注意信号;SIGQUIT(3):交互中止信号;SIGILL(4):检测到非法硬件的指令;SIGTRAP(5):从陷阱返回;SIGABRT(6):异常终止信号;SIGEMT(7):EMT 指令;SIGFPE(8):不正确的算术操作信号;SIGKILL(9):强制终止进程信号;SIGBUS(10):总线错误;SIGSEGV (11):检测到非法的内存调用;SIGSYS(12):系统call的错误参数;SIGPIPE(13):在无读者的管道上写;SIGALRM(14):报时信号;SIGTERM( 15):终止信号;SIGURG(16):IO 信道紧急信号;SIGSTOP(17):暂停信号;SIGTSTP(18):交互暂停信号;SIGCONT (19):如果暂停则继续;SIGCHLD(20):子线程终止或暂停;SIGTTIN(21):后台线程组一成员试图从控制终端上读出;SIGTTOU(22):后台线程组的成员试图写到控制终端上;SIGIO(23):允许I/O信号;SIGXCPU(24):超出CPU时限;SIGXFSZ(25):超出文件大小限制;SIGVTALRM(26):虚时间警报器;SIGPROF(27):侧面时间警报器;SIGWINCH (28):窗口大小的更改;SIGINFO(29):消息请求;SIGUSR1(30):保留作为用户自定义的信号1;SIGUSR2(31):保留作为用户自定义的信号。
范例670 指定信号编号来杀死进程
[root@localhost ~]# kill -9 1933
执行指令“kill -9 1933”将强制杀死进程号为 1933 的进程。
学习目标 能利用 bg 指令将指定任务放到后台执行
语法 bg [可选参数]
功能说明 bg 指令可用来将程序放到后台执行,但指令的运行结果仍然会在终端的输出设备上进行。如果不想看见输出,可以试试用输出重定向‘>’将执行结果输出到文件,或输入stty tostop 命令强制停止该作业。
bg 指令通过将暂挂的程序作为后台作业运行,可在当前环境中恢复执行这些作业。如果指定的程序已经在后台运行,则bg 命令不起作用并退出。指令的执行效果与在指令后加上&相同。
参数说明 可选参数及其说明如下:

基础应用
范例671
将当前正在运行的程序放到后台执行。
[root@localhost ~]# cat
12546
12546
12354
12354//按Ctrl+Z将正在运行的进程挂起
[1]+ Stoppedcat
[root@localhost ~]# ed
//按Ctrl+Z将正在运行的进程挂起
[2]+ Stoppeded
[root@localhost ~]# bg //将挂起的进程放到后台执行
[2]+ ed &
[2]+ Stopped ed
[root@localhost ~]# bg 1
[1]+ cat &
[root@localhost ~]#
学习目标 能使用 Shell 指令来显示进程的状况
语法 gitps [-可选参数][终端][用户]
功能说明 gitps 指令可用来显示及管理进程的执行状况。
参数说明 可选参数及其说明如下:

基础应用
范例672 显示指定用户的进程信息。
[root@localhost ~]# gitps marY //显示指定用户的进程信息
执行指令“gitps mary”将显示属于指定用户 mary 下所有的进程信息。具体显示不再赘述。
学习目标 掌握如何使用 nice 指令来设置程序执行的优先级
语法 nice [-可选参数] [指令[属性]]
功能说明 nice 指令可用来设置程序运行的优先级。优先级的范围为−20~19,共四十个等级,各等级分别代表了不同的优先级,其中数值最小的−20 的优先级最高,数值最大的19的优先级最低。在通常情况下系统默认的程序优先级为0,如果用户想让某个程序更快执行可通过nice指令来重新指定程序的优先级。
直接输入nice指令不跟任何参数时,将在系统的终端显示当前程序的优先级。Linux系统与Windows一样都属于软实时系统。
参数说明 可选参数及其说明如下:

基础应用
范例673 设置程序运行的优先级。
[root@localhost ~]# nice -n 17 free –s 60& //在后台运行free指令,设置优先级为17
[1] 6038
[root@localhost ~]# total used free shared buffers cached
Mem: 515492 473116 42376 0 79928 274000
-/+ buffers/cache: 119188 396304
Swap: 1048568 0 1048568
[root@localhost ~]# ps -l //显示系统进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 6085 6082 0 75 0 - 1133 wait pts/1 00:00:00 bash
0 S 0 6098 6085 0 94 17 - 444 wait pts/1 00:00:00 free
4 R 0 6100 6085 0 78 0 - 1051 - pts/1 00:00:00 ps
[root@localhost ~]#
执行指令“nice –n 17 free –s 60&”将指令free –s 60&的优先级设为17,并在后台运行该指令。通过指令ps –l 输出中的NI项就可查看当前系统中相关进程的优先级。
学习目标 学会使用 ps 指令来显示当前程序运行状态
语法 ps [-可选参数]
功能说明 ps 指令可用来显示当前系统下所有运行程序的执行状态,其中还包含了运行在该系统下的其他用户的进程信息。根据ps指令的进程报告,用户可以随时查看系统中哪些进程正在运行、运行的状态、进程是否结束、进程是否僵死、占用了多少资源等信息,然后根据需求对相关进程进行中断、删除等处理。
参数说明 可选参数及其说明如下:

基础应用
范例674 显示所有的进程信息。
[root@localhost ~]# ps -a //显示系统进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 6098 6085 0 94 17 - 444 wait pts/1 00:00:00 free
4 R 0 6100 6085 0 78 0 - 1051 - pts/1 00:00:00 ps
[root@localhost ~]#
ps命令还经常用于监控后台进程的工作情况。因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令来完成。
学习目标 能运用 pstree 指令来查看系统中进程之间的关系
语法 pstree [-可选参数] [程序]
功能说明 pstree 指令相当于 ps –H 指令,以树状图的方式来显示程序,使进程间的派生关系一目了然。
参数说明 可选参数及其说明如下:

基础应用
范例675 特别表明正在运行的进程。
[root@localhost ~]# pstree -anh //显示进程间的关系
init
|-(keventd)
|-(kapmd)
|-(ksoftirqd_CPU0)
|-(kswapd)
|-(kscand/DMA)
|-(kscand/Normal)
|-(kscand/HighMem)
|-(bdflush)
|-(kupdated)
|-(mdrecoveryd)
|-(kjournald)
|-(khubd)
|-(kjournald8)
|-syslogd/0
|-klogd -x
|-(portmap/0)
|-(rpc.statd)
|-apmd-p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/ apmscript
|-sshd
| '-sshd
| '-sh
| '-pstree-apnh
|-xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
|-(sendmail)
|-(sendmail)
|-gpm, -t imps2 -m /dev/mouse
|-crond
|-(xfs)
|-(atd)
|-mingetty tty1
|-mingetty tty2
|-(gdm-binary)
| '-(gdm-binary2)
| |-X,1813 :0 -auth /var/gdm/:0.Xauth vt7
| '-gdmgreeter
[root@localhost ~]#
执行指令“pstree –anh”显示当前系统下所有进程间的关系。
学习目标 能利用 renice 指令来修改运行程序的优先级
语法 renice 优先级 [-可选参数]
功能说明 renice 指令可用来重新设置运行程序的优先级,优先级可取范围在−20 到 19之间的任意一数值,但只有系统管理员才可以修改其他用户的优先级设置。
参数说明
可选参数及其说明如下:

基础应用
范例676 修改所有隶属于指定用户组或用户的程序的优先级。
[root@localhost ~]# renice 2 -g adc /修改所有隶属于指定用户组的程序的优先级
0: old priority 0, new priority 2
[root@localhost ~]# renice 1 -u root //修改所有隶属于指定用户的程序的优先级
0: old priority -10, new priority 1
[root@localhost ~]#
范例677 修改指定进程的优先级。
[root@localhost ~]# ps -a //显示所有进程
PID TTY TIME CMD
6024 pts/1 00:00:00 ps
[root@localhost ~]# renice 1 -p 6024 //修改指定进程的优先级
6024: old priority 1, new priority 1
[root@localhost ~]#
执行指令“renice 1 -p 6024”,将进程号为 6024 的进程的优先级改变为 1。
学习目标 能利用 skill 指令向执行中的进程发送信息来管理进程操作
语法 skill [信息] [-可选参数] 选择程序规则
功能说明 skill 可以将指定的信息发送各正在执行的程序,来管理程序的执行状况。预设的信息为 TERM(中断),信息有三种写法:分别为 -9(代号);-SIGKILL(名称);或使用 -l / -L 参数加上使用信息。而选择程序的规则有如下几种:终端机代号、使用者名称、程序代号、命令名称。
参数说明
可选参数及其说明如下:

【信息功能】
ALRM :代号为 14,离开。
HUP:代号为1,离开。
INT:代号为2,离开。
KILL:代号为 9,离开/ 强迫关闭。
PIPE:代号为13,离开。
POLL:离开。
PROF:离开。
TERM:代号为15,离开。
USR1:离开。
USR2:离开。
VTALRM:离开。
Ctrl-a X:关闭当前窗口。
STKFLT:离开/ 只适用于 i386、m68k、arm 和 ppc 硬件。
UNUSED :离开/ 只适用于 i386、m68k、arm 和 ppc 硬件。
TSTP:停止 /产生与内容相关的行为。
TTIN:停止 /产生与内容相关的行为。
TTOU:停止 /产生与内容相关的行为。
STOP:停止 /强迫关闭。
CONT:重新启动,如果在停止状态则重新启动,否则忽略。
PWR:忽略 /在某些系统中会离开。
WINCH:忽略。
CHLD:忽略。
ABRT:代号为6,核心。
FPE:代号为8,核心。
ILL:代号为4,核心。
QUIT:代号为3,核心。
SEGV:代号为11,核心。
TRAP:代号为5,核心。
SYS:核心 /或许尚未实现。
EMT:核心 /或许尚未实现。
BUS:核心 /核心失败。
XCPU:核心 /核心失败。
XFSZ:核心 /核心失败。
基础应用
范例678 停止所有在ptt装置上的程序。
[root@localhost~]# skill -KILL -v ptt/* //停止程序
执行指令“skill -KILL -v ptt/*”将停止指定设备上的所有程序。
范例679 停止指定使用者的程序。
[root@localhost~]# skill -STOP –u mark sum //停止程序
执行指令“skill -STOP –u mark sum”将停止指定用户 mark、sum 的所有程序。
学习目标 能使用 top 显示当前系统的进程信息
语法 top [-可选参数]
功能说明 top 指令可以通过它所提供的互动式界面,显示当前系统中正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。用户还可以使用热键对信息加以管理。在top指令的执行过程中,如果用户按下space键将立即刷新输出信息。
参数说明 可选参数及其说明如下:

基础应用
范例680 显示进程信息。
[root@localhost ~]# top //显示进程信息
top - 11:17:48 up 4:31, 2 user, load average: 0.04, 0.05, 0.01
Tasks: 112 total, 2 running, 111 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7% us, 1.7% sy, 0.0% ni, 98.3% id, 0.0% wa, 0.0% hi, 0.0% si
-----------------------------------------------------
-----------------------------------------------------//省略部分输出
PID USERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
-----------------------------------------------------
-----------------------------------------------------//省略部分输出
执行 top指令将循环显示当前系统的进程信息,包括进程 ID、内存占用率、CPU占用率等。
学习目标 学会进行前后台切换
语法 fg[任务号]
功能说明 fg 指令可以把后台执行的任务拉到前台执行。
基础应用
范例681 将后台的程序拉到前台执行。
[root@localhost ~]# ftp 192.168.88.2 & //程序在后台执行
[1] 9860
[root@localhost ~]# Connected to 192.168.88.2.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.88.2:root): iplab604
-bash: iplab604: command not found
[1]+ Stopped ftp 192.168.88.2
[root@localhost ~]# fg %1 //将后台程序拉到前台执行
ftp 192.168.88.2
本例使用指令“ftp 192.168.88.2 &”使得程序在后台执行,然后使用指令“fg %1”将 ftp进程拉到前台执行。
语法 killall[必要参数][选择性参数][指令名]
功能说明 killall 指令用来结束同名的所有进程。
参数说明 必要参数的具体说明如下:


选择性参数的具体说明如下:

基础应用
范例682 杀死同名的所有进程。
[root@localhost ~]# ps -A //显示所有的进程
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 ksoftirqd/0
3 ? 00:00:00 watchdog/0
4 ? 00:00:00 events/0
5 ? 00:00:00 khelper
6 ? 00:00:00 kthread
8 ? 00:00:00 kacpid
//此处省略了部分结果
3355 ? 00:00:17 gnome-terminal
3357 ? 00:00:00 gnome-pty-helpe
3358 pts/2 00:00:00 bash
3377 pts/2 00:00:03 joe
6734 pts/1 00:00:00 ps
[root@localhost ~]# killall joe //杀死同名的所有进程
[root@localhost ~]# killall joe //杀死同名的所有进程
joe: no process killed
[root@localhost ~]# ps -A //显示进程
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 ksoftirqd/0
3 ? 00:00:00 watchdog/0
4 ? 00:00:00 events/0
5 ? 00:00:00 khelper
6 ? 00:00:00 kthread
8 ?00:00:00 kacpid
61 ?00:00:00 kblockd/0
//此处省略了部分结果
3345 ?00:00:00 notification-ar
3347 ?00:00:03 clock-applet
3349 ?00:00:36 mixer_applet2
3355 ?00:00:17 gnome-terminal
3357 ?00:00:00 gnome-pty-helpe
3358 pts/2 00:00:00 bash
6739 pts/1 00:00:00 ps
[root@localhost ~]#
本例使用指令“ps –A”显示当前系统正在运行的所有进程,其中有一个正在运行的进程的名称为“3377 pts/2 00:00:03 joe”。本例使用指令“killall joe”杀死所有的同名进程,然后再运行指令“ps –A”,发现 joe 指令已被杀死。
范例683 向进程发送指定信号。
[root@localhost ~]# kill -l //显示所有的信号
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX
[root@localhost ~]# joe & //后台运行joe指令
[2] 6806
[root@localhost ~]# Processing '/etc/joe/joerc'...done
Processing '/etc/joe/joerc'...done
[2]+ Stopped joe
[root@localhost ~]# killall -TERM joe //杀死joe指令
[root@localhost ~]#
本例使用指令“kill –l”显示所有的信号信息,使用指令“killall -TERM joe”杀死所有名为joe的指令。