1限制
ulimit命令用于修改当前shell启动进程所占用的资源限制。(修改仅在当前shell生效)
ulimit命令格式:ulimit [-SacdfHlmnpstvw][size] /*设置为无限大时,如ulimit -c unlimited*/
-H设置硬件资源限制. -S设置软件资源限制. -a显示当前所有的资源限制. -c size:设置core文件的最大值.单位:blocks(1block=512bytes) -d size:设置数据段的最大值.单位:kbytes -f size:设置创建文件的最大值.单位:blocks -l size:设置在内存中锁定进程的最大值.单位:kbytes -m size:设置可以使用的常驻内存的最大值.单位:kbytes -n size:设置内核可以同时打开的文件描述符的最大值.单位:n -p size:设置管道缓冲区的最大值.单位:kbytes -s size:设置堆栈的最大值.单位:kbytes -t size:设置CPU使用时间的最大上限.单位:seconds -v size:设置虚拟内存的最大值.单位:kbytes -u <程序数目> 用户最多可开启的程序数目 |
示例:查看与设置最大打开文件数
ulimit -Sn /*查看软限制最大打开文件数*/ ulimit -Hn/*查看硬限制最大打开文件数*/ ulimit -Hn 10240 /*设置硬限制最大打开文件数为10240*/ ulimit -Sn 10239 /*设置软限制最大打开文件数位10239 该参数<=硬限制的参数10240*/ |
硬限制是可以在任何时候任何进程中设置,但硬限制只能由超级用户提起。
软限制是内核实际执行的限制,任何进程都可以将软限制设置为小于等于其硬限制的值。
2库文件
2.1静态函数库
以 .a结尾的文件
av crv libfoo.a bill.o fred.o /*创建静态函数库libfoo.a*/ ranlib libfoo.a /*为函数库生成内容表,之后libfoo.a就可以使用了*/ gcc -o program program.o -L. -lfoo /*使用静态函数库libfoo.a*/ |
2.2共享函数库
以.so结尾的文件
gcc -fPIC -shared -o libfoo.so bill.c fred.c /*创建共享库libfoo.so*/ gcc -o program program.c ./libfoo.so /*使用共享库libfoo.so*/ ldd program /*查看程序program使用的共享库*/ |
2.3内核模块
以.ko结尾的文件
insmod ./hello.ko /*加载内核模块hello.ko*/ rmmod ./hello.ko /*卸载内核模块hello.ko*/ |
3进程
3.1查看进程
ps命令:
通过man ps或ps --help查看ps的参数信息。ps命令支持3种不同类型的命令行参数:
<1>Unix风格的参数,前面加单破折线
<2>BSD风格的参数,前面不加破折线
<3>GUN风格的长参数,前面加双破折线
<1>Unix风格的ps命令的主要参数 | |
参数 | 描述 |
-A | 显示所有进程 |
-a | 显示除控制进程和无终端的进程外的所有进程 |
-d | 显示除控制进程外的所有进程 |
-e | 显示所有进程 |
-f | 显示完整格式的输出 |
-l | 显示长列表 |
-H | 层级格式显示进程(树状,用来显示父进程) |
-L | 显示进程中的线程 |
$ ps –lf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
列的信息 | 说明 |
F | 内核分配给进程的系统标记 |
S | 进程的状态 |
UID | 用户ID |
PID | 进程的进程号 |
PPID | 父进程的进程号 |
C | 进程生命周期中的CPU利用率 |
PRI | 进程的优先级(数字越大,优先级越低) |
NI | nice值,用来参与决定优先级 |
ADDR | 进程的内存地址 |
SZ | 假如进程被换出,所需交换空间的大致大小 |
WCHAN | 进程休眠的内核函数名(进程或内核线程为之等待或休眠的事件) |
STIME | 进程启动时的系统时间 |
TTY | 进程启动时的终端设备 |
TIME | 运行进程需要的累计CPU时间 |
CMD | 启动的程序名称 |
常用命令:
$ps –elf ##以长列表完整格式显示所有进程的信息
$ps –elfH ##以层级格式显示
$ps -elfL ##显示进程中的线程
<2>BSD风格的ps命令的主要参数 | |
参数 | 描述 |
T | 显示跟当前终端关联的所有进程 |
a | 显示跟任意终端关联的所有进程 |
g | 显示所有的进程,包括控制进程 |
x | 显示所有的进程,包括未分配任何终端的进程 |
j | 显示任务信息 |
u | 采用基于用户的格式显示 |
c | 显示真实的命令名称 |
f | 用分层格式来显示进程,表明哪些进程启动了哪些进程 |
H | 将线程按进程来显示 |
常用命令:
$ ps aux
$ ps auxf
pstree命令:
lincoln@ubuntu:~$ pstree --help
pstree: unrecognized option '--help'
Usage: pstree [ -a ] [ -c ] [ -h | -H PID ] [ -l ] [ -n ] [ -p ] [ -u ]
[ -A | -G | -U ] [ PID | USER ]
pstree -V
Display a tree of processes.
-a, --arguments show command line arguments 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
-A, --ascii use ASCII line drawing characters
-c, --compact don't compact identical subtrees 不使用精简标示法。
-h, --highlight-all highlight current process and its ancestors 列出树状图时,特别标明现在执行的程序
-H PID,
--highlight-pid=PID highlight this process and its ancestors
-G, --vt100 use VT100 line drawing characters
-l, --long don't truncate long lines
-n, --numeric-sort sort output by PID
-p, --show-pids show PIDs; implies -c
-u, --uid-changes show uid transitions 显示用户名称。
-U, --unicode use UTF-8 (Unicode) line drawing characters
-V, --version display version information
PID start at this PID; default is 1 (init)
USER show only trees rooted at processes of this user
lincoln@ubuntu:~$
示例
1
:
查看相关
ID
:进程
ID
,父进程
ID
,组
ID
,会话
ID
,命令
ps -o pid,ppid,pgid,sid,comm 进程id
示例2:查看进程中的子进程或线程
ps mp pid -o THREAD,tid 或 ps -T -p pid 或 pstree -p pid
示例3:查看进程是否为守护进程
ps axj | grep programname
当进程为守护进程时,因守护进程没有控制终端,所以其终端名(TTY)设置为问号(?),终端前台进程组ID(TDGID)设置为-1
可先通过ps axj |more 看下各个列的标题。
常用命令:
ps auxf 或 ps -ef 或 ps –elfH
3.2实时监测进程
top命令
top的交互命令 | |
命令 | 描述 |
l | 切换单CPU状态模式和对称处理器模式 |
B | 打开/关闭表中重要数字的加粗显示 |
Z | 设置表的颜色 |
l | 显示/关闭平均负载信息行 |
t | 显示/关闭CPU信息行 |
m | 显示/关闭MEM和SWAP行 |
f | 添加/移除输出中的不同信息列 |
o | 更改信息行的显示顺序 |
R | 切换正常排序还是倒序排序 |
H | 显示/关闭显示线程情况 |
c | 切换显示进程的命令名还是完整的命令行输入(包括参数) |
S | 切换显示累计CPU时间还是相对CPU时间 |
i | 切换是否显示空闲进程 |
n或# | 设置要显示的进程数 |
r | 改变指定进程的优先级 |
d或s | 改变更新的间隔(默认为3s) |
W | 把当前设置写到一个配置文件中 |
q | 退出top命令 |
3.3杀死进程
kill命令:用于杀死进程或发送信号给特定进程
kill [ -s signal | -p ] [ -a ] [ -- ] pid
杀死任一进程的可靠方法:kill –9 pid
4 CPU与内存
4.1 top命令
查看所有任务、CPU、内存,继续按1查看各个cpu的信息,如Cpu0、Cpu1
top - 21:51:27 up 12:31, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 63 total, 1 running, 62 sleeping, 0 stopped, 0 zombie Cpu0 : 0.0%us, 0.5%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 2059432k total, 201084k used, 1858348k free, 30692k buffers Swap: 786424k total, 0k used, 786424k free, 94888k cached |
4.2查看CPU信息
cat /proc/cpuinfo
4.3查看内存信息
cat /proc/meminfo
4.4查看内存使用情况
free
附:
查看磁盘信息:fdisk -l
查看内核信息:uname -a
查看硬件信息:dmidecode
查看开机信息:dmesg
5监控IO状态
CentOS安装iostat:
yum install sysstat /*安装sysstat*/
/etc/init.d/sysstat start /*启动sysstat*/
checkfig sysstat on /*设置sysstat自启动*/
Ubuntu安装iostat:
sudo apt-get install sysstat /*安装sysstat*/
/etc/init.d/sysstat start /*启动sysstat*/
iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态 |