首页 > 代码库 > Linux程序与资源管理

Linux程序与资源管理

使用man command可以查看在线帮助

可执行的二进制文件就是程序

执行程序时因触发事件而获取的ID,称为PID

?

我们登入系统后,会取得一个bash shell的PID。我们可以用bash提供的接口去执行另一个程序,这另外执行的程序也会获得一个PID,这个PID就是子程序。而我们的bash环境,就是父程序。

常驻内存的程序:crond atd, syslog, Apache, named, vsftpd…系统或网络服务

执行完就退出的程序:ls, touch, rm/mkdir/cp/mv, chmod, chown, passwd等

?

▲作业管理

单一终端界面下,bash shell同时管理多个作业

每一个作业程序必须是shell的子程序

每一个作业程序不能等待terminal/shell的输入input

?

▲后台与前台

前台是用户可以控制的作业foreground

后台是在内存中自行运作的作业,用户需用bg/fg等指令将该作业调出来

?

jobs [-lrs] 观察目前的后台作业状态

????参数-l????????同时列出PID

????参数-r????????仅列出正在后台run的工作

????参数-s????????仅列出正在后台stop的工作(+代表默认,fg优先处理默认作业)

?

fg [%]jobnumber????将后台作业拿到前台处理

bg????让作业在后台进行

Ctrl+z????????将目前的作业放到后台暂停

?

kill –signal %jobnumber

????参数-l????????列出目前kill能使用的signal有哪些

????signal????????代表给后面作业什么提示,用man 7 signal可知

????参数-1????????重新读取一次参数的设置文件

????参数-2????????代表Ctrl+C

????参数-9????????立刻强制删除一个作业

????参数-15????以正常的程序方式终止一项工作

?

▲进程管理

如果linux系统很繁忙,当整个系统资源快被耗尽时,我们应该找出最耗系统资源的那个进程,然后删除该进程或降低它的执行权限

如果某个程序僵死zombie,我们应该将其找出并杀死

?

进程的观察:

ps????????静态的查看进程????process status

top????????动态的查看进程????top [-d] top [-bnp]

pstree????????查阅程序之间的关系????pstree [-Aup]

?

stat当前进状态

????R可运行 D等待磁盘 S在睡眠 T被跟踪或被停止

附加标志

????W进程被交换出去 <进程拥有比普通优先级更高的优先级 N进程拥有比普通优先级更低的优先级 L有些页面被锁在内存中 s进程是会话的先到进程

RSS????表示内存中页的数量

?

killall [-ile] [命令名]????通过程序的名字直接杀死和该程序有关的所有进程

????参数-i????????interactive交互式,提示用户是否删除

????参数-l????????指令名称忽略大小写

????参数-e????????

?

free [-bkmgtV]????????显示系统资源内存和缓冲区等

?

uname [-asrmnopiv]????显示电脑以及os的相关信息

?

uptime ????????显示系统当前时间,已开机时间,登陆人数以及负载等

w,top????????uptime同样的显示信息

dmesg????????显示开机信息,直接查看/var/log/dmesg

sar [-ru]????检测主机的资源状态

netstat [-atunlp]????应用于网络监控

?

linux系统根据各进程的优先级调用各进程。优先级可以使用谦让度nice来调整

????PRI(new) = PRI(old) + nice

对于普通用户,新创建的进程从它的父进程哪里继承谦让值,进程的属主可以增加谦让值,但不能降低nice,这样可以防止低优先级的进程派生出高优先级的子进程。超级用户可以随意设置nice

nice [-n] command

renice [number] PID

?

fuser [-ki] [-signal] file/dir????根据文件或目录查找使用该文件或目录的进程

?

/proc文件系统

????Linux版的pstop命令都是从/proc目录读取各进程的状态信息,内核把有关系统状态的有意义的信息都放在这个伪目录。进程特有的信息分别被放到了按PID起名字的子目录里

?

/proc目录下的进程信息文件

????cmd????????进程正在执行的命令或程序

????cmdline????进程的完整命令行,以null分割

????cwd????????链到进程当前目录的符号连接

????environ????进程的环境变量

????exe????????链到正被执行的文件的符号连接

????fd????????子目录,其中包含链到每个打开文件的描述符的连接

????maps????????内存映射信息

????root????????链到进程的根目录的符号连接

????state????????进程的总体状态

????statm????????内存使用情况的信息

?

lsof [-Uu] [+d]????????查出某个进程打开或使用的文件与目录

pidof [-sx] program_name????找出正在运行中的程序的PID

????

?

Linux程序与资源管理