首页 > 代码库 > linux进程管理与SELinux
linux进程管理与SELinux
http://blog.csdn.net/pipisorry/article/details/23376005
工作管理job control
登陆 bash 后, 想要一边复制文件、一边进行数据搜寻、一边进行编译,还可以一边进行 vim 程序撰写! 当然我们可以重复登陆那六个命令行的终端机环境中,不过,也能在一个 bash 内达成。
job control 的管理
直接将指令丢到背景中“执行”的 &
将“目前”的工作丢到背景中“暂停”:[ctrl]-z
[1]+ Stopped vim ~/.bashrc
在 vim 的一般模式下,按下 [ctrl] 及 z 这两个按键,屏幕上会出现 [1] ,表示这是第一个工作, 而那个 + 代表最近一个被丢进背景的工作,且目前在背景下默认会被取用的那个工作 (与 fg 这个指令有关 )!而那个 Stopped 则代表目前这个工作的状态。在默认的情况下,使用 [ctrl]-z 丢到背景当中的工作都是“暂停”的状态喔!
观察目前的背景工作状态: jobs
# jobs [-lrs] 选项与参数: -l :除了列出 job number 与指令串之外,同时列出 PID 的号码; -r :仅列出正在背景 run 的工作; -s :仅列出正在背景当中暂停 (stop) 的工作。
将背景工作拿到前景来处理:fg
# fg %jobnumber 选项与参数: %jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!
让工作在背景下的状态变成运行中: bg
# jobs ; bg %3 ; jobs
管理背景当中的工作: kill
# kill -signal %jobnumber [root@study ~]# kill -l 选项与参数: -l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些? signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知: -1 :重新读取一次参数的配置文件 (类似 reload); -2 :代表与由键盘输入 [ctrl]-c 同样的动作; -9 :立刻强制删除一个工作; -15:以正常的程序方式终止一项工作。与 -9 是不一样的。
# kill -9 %2; jobsNote: -9 这个 signal 通常是用在“强制删除一个不正常的工作”时所使用的, -15 则是以正常步骤结束一项工作(15也是默认值),两者之间并不相同呦!举上面的例子来说, 我用 vim 的时候,不是会产生一个 .filename.swp 的文件吗? 那么,当使用 -15 这个 signal 时, vim 会尝试以正常的步骤来结束掉该 vi 的工作, 所以 .filename.swp 会主动的被移除。但若是使用 -9 这个 signal 时,由于该 vim 工作会被强制移除掉,因此, .filename.swp 就会继续存在文件系统当中
脱机管理\离线管理
在工作管理当中提到的“背景”指的是在终端机模式下可以避免 [crtl]-c 中断的一个情境,那个是 bash 的背景,并不是放到系统的背景去!所以,工作管理的背景依旧与终端机有关啦! 如果你是以远端连线方式(如ssh)连接到你的 Linux 主机,并且将工作以 & 的方式放到背景去, 在工作尚未结束的情况下你离线了,该工作不会继续进行,而是会被中断掉。首先,你可以使用at 来处理!因为 at 是将工作放置到系统背景, 而与终端机无关。
还可以使用nohup
# nohup [指令与参数] #在终端机前景中工作 # nohup [指令与参数] & #在终端机背景中工作Note: nohup 并不支持 bash 内置的指令,因此你的指令必须要是外部指令才行。
可以使用top或者pstree查看刚刚的命令是不是在后台运行。
nohup命令及其输出文件
Note:
1 如果每次运行nohup,再输入其它命令就会[1]+ Exit 1,说明程序出错,先直接运行或者重定向2 > error.txt看看错误是啥。
2 输出提示nohup: ignoring input and appending output to ‘nohup.out’
That‘s not an error - it‘s normal behavior. It just informs you that once started the in/output is removed from your console.不想输出,重定向就可以了。
皮皮blog
进程管理
程序的观察
ps (ps -l, ps aux, zombie), top, pstree
查看内存占用和cpu使用情况top
# top [-d 数字] | top [-bnp]
选项与参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。默认是 5 秒;
-b :以批次的方式执行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批次的结果输出成为文件。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p :指定某些个 PID 来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。
q :离开 top 软件的按键。
显示的内容依序是:第一行(top...):这一行显示的信息分别为:
- 目前的时间,亦即是 00:53:59 那个项目;
- 开机到目前为止所经过的时间,亦即是 up 6:07, 那个项目;
- 已经登陆系统的使用者人数,亦即是 3 users, 项目;
- 系统在 1, 5, 15 分钟的平均工作负载。我们在第十五章谈到的 batch 工作方式为负载小于 0.8 就是这个负载啰!代表的是 1, 5, 15 分钟,系统平均要负责运行几个程序(工作)的意思。 越小代表系统越闲置,若高于 1 得要注意你的系统程序是否太过繁复了!
第二行(Tasks...):显示的是目前程序的总量与个别程序在什么状态(running, sleeping, stopped, zombie)。 比较需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个 process 变成僵尸了吧?
第三行(%Cpus...):显示的是 CPU 的整体负载,每个项目可使用 ? 查阅。需要特别注意的是 wa 项目,那个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键“1”来切换成不同 CPU 的负载率。
第四行与第五行:表示目前的实体内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap 的使用量要尽量的少!如果 swap 被用的很大量,表示系统的实体内存实在不足!
第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。
至于 top 下半部分的画面,则是每个 process 使用的资源情况。比较需要注意的是:
- PID :每个 process 的 ID 啦!
- USER:该 process 所属的使用者;
- PR :Priority 的简写,程序的优先执行顺序,越小越早被执行;
- NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;
- %CPU:CPU 的使用率;
- %MEM:内存的使用率;
- TIME+:CPU 使用时间的累加;
单独查看内存使用情况的命令:free -m
查看内存及cpu使用情况的命令:top
也可以安装htop工具,这样更直观,
安装命令如下:sudo apt-get install htop
安装完后,直接输入命令:htop
皮皮blog
程序的管理
signal, kill, killall
皮皮blog
程序的执行顺序
priority, nice, renice
皮皮blog
系统资源的查看
free, uname, uptime, netstat, dmesg, vmstat
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ‘ lm ‘ | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
再完整看cpu详细信息, 不过大部分我们都不关心而已.
# dmidecode | grep ‘Processor Information‘
查看内 存信息
# cat /proc/meminfo
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)
# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)
查看机器型号
# dmidecode | grep "Product Name"
查看网卡信息
# dmesg | grep -i eth
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
linux shell获取本机IP命令:
ifconfig | grep ‘inet addr:‘| grep -v ‘127.0.0.1‘ | cut -d : -f 2 | awk ‘{ print $1}‘
或者ifconfig | grep ‘inet addr:‘| grep -v ‘127.0.0.1‘ | cut -d : -f 2 | cut -d ‘ ‘ -f 1
或者/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr:"
或者local_host="`hostname --fqdn`"; local_ip=`host $local_host 2>/dev/null | awk ‘{print $NF}‘`
或者local_host="`hostname --fqdn`"; nslookup -sil $local_host 2>/dev/null | grep Address: | sed ‘1d‘ | sed ‘s/Address://g‘
[获取当前IP地址的shell脚本详解]
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
[Linux 查看CPU信息,机器型号,内存等信息]
from: http://blog.csdn.net/pipisorry/article/details/23376005
ref:
linux进程管理与SELinux