系统监视
•系统监视
1、了解系统状况
• uname:显示系统信息
• hostname:显示主机名
• last:列出最近的用户登录
• lastlog:列出每一个用户的最近登录情况
• free:显示内存使用状况
• top:系统监视器
uname
uname -a,可以用来显示系统的完整鉴定信息,包括主机名、核心版本等。
例如:
[root@stationxx root] # uname –a
Linux stationxx.example.com 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003
i686 i686 i386 GNU/Linux
hostname
hostname指令可以用来临时改变主机名。如果想永久更换主机名,需要编辑/etc/sysconfig/network。
last
last指令显示系统最近的登录状况,包括用户名、来自、登录时间。例如:
[root@stationxx root] # last
root tty1 Thu Jul 31 09:24 still logged in
root pts/0 192.168.103.101 Thu Jul 31 10:13 still logged in
…………..
top
按q退出top。另有gtop,则是top在图形界面下的一个优化版本。
2、进程
• 系统通过进程来完成工作
• 每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程
• 系统的原始进程是init
– init的PID总是1
• 一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程
进程
Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源。进程的一个比较正式的定义是∶在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。
进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多shell(包括bash和tcsh)的一个特性,使用户能在多个独立作业间进行切换。
每个进程都有自己的进程号,除了进程号每个进程通常还具有优先级、私有内存地址、环境、系统资源、文件描述、安全保证。象人类一样,一个进程可以同时身为一个进程的子进程,及另一个进程的父进程。我们可以使用pstree –p 查看进程间的关系和进程号。
2.1查询进程
• 查询进程的指令:
– ps [option]
• pstree可以用来以树状的方式表现进程的父子关系
• top是一个常用的系统监视工具。
ps
ps的常用参数:
-a 显示所有进程,但不包括不隶属于任何一个终端的进程
-u 显示不属于任何一个终端的进程,诸如各类系统网络服务的后台程序
-l 以长模式显示进程的信息
-u 显示进程的拥有者信息
在ps的参数中,是否加-号,表示不同的参数。
ps显示中的STAT,可以为:
•R:正在运行。
•S:进程睡眠中,通常可以因事件发生而被唤醒。
•T:进程已停止。
•D:进程睡眠中,除非发生指定事件,否则不会被唤醒。
•Z:僵尸进程,例如未能被父进程回收的子进程。通常是一个系统bug或非法操作。
•< :高优先级进程。
•N:低优先级进程。
top
14:01:53 up 4:47, 3 users, load average: 2.05, 2.04, 2.01
82 processes: 79 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 0.4% user 2.6% system 82.4% nice 0.0% iowait 14.4%idle
Mem: 254252k av, 247392k used, 6860k free, 0k shrd, 108348k
2.2控制进程
• kill:
– 语法:kill [-signal] PID
– 向进程传送一个特定的讯号
– 默认为15(终结)
– kill -l:列出所有可以由kill传递的讯号
• killall
进程控制
当需要中断一个前台进程的时候,通常是使用Ctrl+c组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。
kill可以通过向一个进程发送一个讯号来控制进程。这个讯号既可以是数字,也可以是名称。默认情况下,kill向进程传送进程号15,即terminate,以通知进程结束。我们可以使用kill –l列出所有可以由kill传递的讯号。
[root@stationxx root]# kill –l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
、、、、、、、、
2.3进程的优先级
• 进程的优先级,用nice值来表示
• nice:以一个不同的nice值来运行指令
– nice -n num command
• renice:改变一个运行进程的nice值
– renice -n pid
进程的优先级
Linux系统用nice值来判断一个进程的优先级,修改进程运行的优先级,是通过增加或减少进程的nice值来实现。nicez值中负值( -n )表示高优先级,正值( n )表示低优先级。nice值的范围在-20~19之间,数值越大表示优先级越低。系统默认的进程nice值为0。当我们使用nice指令可设定以一定的nice值来执行一个命令时,默认情况下nice值为10。一般用户只能设定以一个正的nice值,即低优先级的方式来执行一个命令。只有root才可以指定以一个负的nice值,即高优先级的方式执行一个命令。我们通过renice可以更改一个运行进程的nice值,对于一般用户,只能提高nice值,降低优先级;只有root用户才能降低nice值,提升优先级。
nice命令的语法结构:
nice [increment] [command] [arguments] 例如:
[root @stationxx root] # vi abc
[root @stationxx root] # ps -l -p 1401( 1401为vi进程值)
F S UID PPID C PRI NI ADDR SZ WCAN TTY TIME CMD
20 S 0 1401 0 75 20 fb117c18 400 f01af490 02 00:00:00 vi abc
可见,执行这个vi的nice值时20(默认值).
[root @stationxx root] # nice -17 vi abc
[root @stationxx root] # ps -l -p 1404
F S UID PPID C PRI NI ADDR SZ WCAN TTY TIME CMD
20 S 0 1404 0 75 -17 fb118418 400 f01af4f4 02 00:00:00 vi abc
nice值小的进程优先级高;nice值大的进程的优先级低
3、前台和后台
• 默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程。
• 对每一个控制台,都允许多个后台进程。
• 对前台/后台进程的控制与调度,被称为任务控制。
3.1将进程丢入后台
• command &:将一个进程直接丢入后台运行
– nohup command &:将一个进程直接丢入后台运行,而且在该控制台退出后,进程仍不挂断
• ctrl + Z:将一个正在运行的前台进程暂停,并丢入后台
•单独使用nohup没有任何意义,系统不会自动添加&将进程变为后台进程。
•有些指令,如wget,本身有参数可代替nohup。
4、工作
• jobs:列出系统当前的后台进程
• fg:将后台进程拉回前台
• bg:激活后台暂停的进程
jobs
进程这一概念是对系统而言,对每一个控制台,我们则称为job。与进程有进程号一样,使用kill、renice等指令操作进程使用进程号,使用fg、bg指令操作job使用工作号。
bg使挂起的进程在后台运行。例如,当你已经在前台启动了一个命令时(没有在此命令后面使用&),意识到这一命令将运行叫长一端时间,但此时还须使用shell。在这种情况下,可通过在按下Ctrl键的同时按下Z键挂起当前运行的进程。此时你即可以使它长期挂起,也可以通过输入bg 把这一进程放到后台运行。这样便可以把shell解放出来。从而用于其他命令的执行。
fg使被挂起的进程恢复到前台运行。
对于job,我们也可以通过kill [-signal] %jobID来控制。
5、/proc目录
• /proc目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息
• 用户可以通过cat /proc/下的文件,来获得系统的信息
• 这些信息包括系统硬件、网络设置、内存使用,及其他一些东西
• /proc/sys目录下的文件,允许系统管理员更动,这些变动会直接影响当前核心
•/proc目录在每次系统开机时由核心根据/etc/fstab自动在内存中创建,并不基于硬盘。
•/proc目录下的文件与目录都是虚拟产生,因此绝大多数的文件大小为零。
•不可以cat /proc/kcore。这是当前运行内核的一个镜象,尝试cat会造成当前终端无法使用。
•常用的/proc下的文件:
•/proc/interrupts:IRQ设置
•/proc/cpuinfo:CPU信息
•/proc/dma:DMA设置
•/proc/ioports:输入输出设置
•/proc/meminfo:系统内存使用状况
•/proc/loadavg:系统负载平均值
•/proc/uptime:系统运行时间与发呆时间
•/proc/version:Linux核心版本、创建主机、创建时间等
•/proc目录下的常用目录
•/proc/scsi:scsi设备信息
•/proc/ide:ide设备信息
•/proc/net:网络状态与配置信息
•/proc/sys:核心配置参数
•/proc/<PID>:进程的信息
•改变/proc/sys目录下的文件,例如,我们可以用:
echo 1 > /proc/sys/net/ipv4/ip_forward
来打开IP转发功能
6、系统日志
• 系统日志记录着系统运行中的记录信息
• 在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。
• 系统日志可以预警安全问题
• 系统日志一般都存放在/var/log目录下
6.1常用的系统日志
• /var/log/dmesg
– 核心启动日志
• /var/log/messages
– 系统报错日志
• /var/log/maillog
– 邮件系统日志
•/var/log/dmesg,此日志文件写在系统每次启动时,包含了核心装入时系统的所有输出数据。我们可以使用dmesg命令直接查看!
•/var/log/messages,这是一份标准系统日志,记录着大部分系统服务的输出,包括启动时非关核心的一些输出。我们一般只关心最近发生的事件,所以一般使用tail命令查寻文件的结尾。
•/var/log/maillog,此日志包含所有由sendmail送出的信息和报错。
6.2 常用的系统日志(二)
• /var/log/xferlog
– FTP服务用日志
• /var/log/secure
– 安全信息
– 系统登录与网络连接的信息
• /var/log/wtmp
– 登录记录
•/var/log/xferlog,此日志用于记录所有由ftp服务汇报的讯息和报错。
•/var/log/secure,此日志包含了所有与系统相关的讯息,诸如登录,tcp_wrapper与xinetd服务。
•/var/log/wtmp,系统的每一次登录,都会在此日志中添加记录。为了防止有人篡改,该文件为二进制文件。只能用last这一类的指令来读取。