您的位置:首页 > 运维架构 > Linux

Linux基础:调查和管理进程

2013-08-17 18:38 477 查看
什么是进程?进程是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID相关权限和 SElinux决定对文件系统的存取和访问 通常从执行进程的用户处继承
查看进程使用ps来查看进程信息 仅执行ps,显示当前终端中的进程 a 选项包括与现行终端的所有进程 x 选项包括不连接终端的进程 u 选项显示进程所有者的信息 f 选项显示进程的父进程 o 属性,…选项显示定制的信息: ps axo pid,comm,%cpu,%mem,state,tty,ppid,pri,ni,user,cmd ps aux ; ps -l
搜索进程最灵活:ps 选项 | 其它命令ps axo comm,tty | grep ttyS0按预定义的模式:pgrep$ pgrep -U uid sshd$ pgrep -G gid sshd按确切的程序名称:pidof :找出一个程序的pid$ pidof bash
Ps选项 默认显示当前终端中的进程-a 选项包括所有终端中的进程-x 选项包括不连接终端的进程-u 选项显示进程所有者的信息-f 选项显示进程的父进程-e选项是现实所有进程-p pid 显示些pid的进程信息-o 属性,…选项显示定制的信息:pid、comm、%cpu、%mem、state、tty、euser、ruserps -e 两个都是查看所有进程ps -ef
ps axo comm,tty|grep tty




pgrep -U root ssh




pgrep –G root |more




查找cups进程




产看进程id号




通过一下选项显示进程的详细信息




列出进程调用bash的进程号




或者通过pidof 来查看bash进程




信号
最基本的进程间通讯方式 -直接发送给进程,不需要用户界面 -程序给每个信号关联动作 -发送信号可以使用名称或号码: 信号15 ,TERM(默认):正常终止 信号9,KILL:强制立即终止 信息1,HUP:重读配置文件 man 7 signal 显示了完整列表信息,比较详细
通过kill -l 来查看信号类型,但是信息没有那么详细



给进程发送信号
按PID:kill [-信号] pid …按名称:killall [-信号] bash按模式:pkill [-信号] 模式
例如查看rsyslogd进程号,然后通过kill重新启动



通过tail命令查看是否重新启动




例子1:把SIGHUP命令发送给rsyslogd#killall -1 rsyslogd例子2:强制终止httpd进程#killall -9 httpd

调度优先性调度优先级priority决定对CPU的使用顺序优先级受进程的nice值(nice value)影响这个nice值的范围是-20到19,默认为0 -pri值越小,说明对CPU的使用越优先使用ps –o comm,nice ;ps axo pid,nice,userps -l 命令可以查看




改变调度优先性
nice值可以被改变… -在启动进程时: nice -n +5 命令名字 nice -n -10 命令名字 -在启动后: $ renice +5 PID ; renice -5 PID $ renice -n +5 PID ; renice -n -5 PID只有根用户才能降低nice值(提高优先性) nice -n -10 vim nice -n +10 vim 普通用户的nice只能是0-19,而且每只能比前一次大
查看comm,和nice启动进程时给定nice值:nice –n 5 命令




修改bash的nice值




修改bash的nice值为15 renice –n 15 pid




查看bash的nice值是否发生变化




修改vim的nice值




通过例子可以看到root可以使nice值变小,也可将变小的值提高




查看普通用户能否修改nice值




交互式进程管理工具
动态查看进程信息的命令行:top(信息)查看rhce-||调查和管理进程.doc文档关于top命令的用法M:以内存使用为序排列P:以cpu的使用率排列h:帮助q(小写):退出 图形化界面:gnome-system-monitor 能力 -显示实时进程信息 -允许排序、中止运行、和重设nice值

Gnome-system-monitor




作业控制
前台与后台区别在后台运行进程-在命令行后添加一个和号(&): firefox&将进程放到后台中暂时停止:-使用Ctrl -z 或发送信号 19 (STOP)管理后台作业或暂停的作业-列举作业号码和名称:jobs-在后台恢复运行:bg  [%作业号码]-在前台恢复运行:fg   [%作业号码]-发送信号:kill  -[信号]  [%作业号码]

计划任务与例行任务
一次性作业使用at,重复性作业使用crontab



没有被重导向的输出会被邮寄给用户根用户能够修改其它用户的作业* The superuser may use these commands in any case. For other users, permission to use at is determined by the* files /etc/at.allow and /etc/at.deny.* If the file /etc/at.allow exists, only usernames mentioned in it are allowed to use at.* If /etc/at.allow does not exist, /etc/at.deny is checked, every username not mentioned in it is then allowed to* use at.* If neither exists, only the superuser is allowed use of at.* An empty /etc/at.deny means that every user is allowed use these commands, this is the default configuration.与at有关的配置文件,at.allow,at.denyat.allow优先级比at.deny的高: 1.先看at.allow,有在里面的用户可以使用at  at.allow不存在时,则检查at.deny,里面的用户不能使用 2.两个文件不存在则只有root才可以使用 一般系统默认只有一个空的at.deny,意味着系统里所有的用户都可以使用at, 两个文件里写用户里一行一个用户

步骤1、先service atd start|restart2、at 时间 时间:at now + 20 minutes at 20:39 2013-4-13回车后,可以输入要执行的命令输入完成后ctrl+datq = at -l   查看atrm 作业号= at -d   作业号
Crontab文件格式项目包含五个用空格分隔的字段,然后是要执行的命令每行一个项目,行的长度没有限制字段是:分钟、小时、日期、月份、星期几注释行以#开头详细参见man 5 crontab的说明书页
与crontab有关的配置文件:cron.allow、cron.deny1.先看cron.allow,在里面的用户则可以使用crontab2.没有cron.allow的,检查cron.deny,在里面的不可以使用crontab3.两个文件都不存在时只有root可以使用一般系统默认只有一个空的cron.deny,意味着所有人都可以使用以上两个文件一行一个用户账号

步骤: 1 /etc/init.d/crond start|restart或者service crond start|restart 2 crontab -e 3 出现的vi编辑器输入要执行的命令,一行一个任务,输入完了:wq保存退出查看:crontab -l 删除此用户所有任务:crontab -r只想修改,crontab -e
/etc/crontab
系统自动周期性执行vim /etc/crontab SHELL=/bin/sh MAILTO=paul # run five minutes after midnight, every day 5 4 3 6 * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # run at 2:15pm on the first of every month -- output mailed to paul 15 */2 1 * * $HOME/bin/monthly # run at 10 pm on weekdays, annoy Joe 0 22 * * 1-5 mail -s "It’s 10pm" joe%Joe,%%Where are your kids?% 23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday" 5 4 * * sun echo "run at 5 after 4 every sunday"

聚集命令
聚集命令概念:把命令写在一起有两种聚集命令的方法: -复合式:date; who | wc –l 命令会一个接一个地运行子shell:(date;who | wc –l)>> /tmp/trace -所有的输出都被发送给单个STDOUT和STDER
例子







退出状态
进程使用退出状态来报告成功或失败-0代表成功,1-255代表失败-$? 变量保存上一条的命令退出状态-exit [num]:终止,并把状态设置为num-Shell脚本可以自定义错误信息例如: $ ping -c 1 -W 1 station999 &> /dev/null $ echo $?



正常执行echo $?返回0 ,错误的话返回大于零的数字

条件性的执行操作符

根据退出状态而定,命令可以有条件地运行&& 代表条件性的AND THEN&&只有第一条命令只有执行成功后,才能那个执行第二条命令 || 代表条件性的OR ELSE||只有第一条命令执行失败后,才能执行第二条命令例如: $ grep -q no_such_user /etc/passwd || echo 'No such user' No such user
$ ping -c1 -W2 station1 &> /dev/null \ > && echo "station1 is up" \ > || (echo 'station1 is unreachable'; exit 1) station1 is up

test 命令
判断条件是否成立,以便用在条件性执行中条件成立,则为真,则返回0条件不成立,则为假,则返回非0长格式的例子: $ test "$A" = = "$B" && echo "Strings are equal" $ test "$A" -eq "$B" && echo "Integers are equal" 简写格式的例子: $ [ "$A" == "$B" ] && echo "Strings are equal“ $ [ "$A" -eq "$B" ] && echo "Integers are equal"



查看日志的重要性
日志的作用 解决系统故障 解决网络服务问题 记录登陆信息
常见的日志文件
/var/log/secure 记录用户登录系统,只有有要求输入密码的就纪录/var/log/wtmp 记录登陆者的信息数据,由于这个文件已编码,只能使用last命令来查看/var/log/messages 这个文件相当重要,只是系统的错误信息都会记录在这个文件中/var/log/boot.log 记录开机或一些服务启动和关闭信息/var/log/maillog 和/var/log/mail/*记录邮件来往的用户记录/var/log/cron 记录crontab例行性服务的内容/var/log/httpd ,/var/log/news /varlog/samba 等记录网络服务的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 进程 日志 信息