- 论坛徽章:
- 0
|
进程控制
在系统上运行的进程
在系统上运行的任何应用程序都是一个进程。在内核中追踪进程或者管理进程的时候,给每个进程都分配了一个唯一的进程识别号码(PID)。PID号码是root和普通用户鉴别他们的进程的时候使用的。
显示进程和PID
ps命令是用户为了显示当前在系统上运行的进程的列表的通用方法。另外还有2个其他的方法来管理进程,包括:CDE进程管理器和prstat命令
CDE进程管理器
Solaris操作环境CDE提供一个进程管理窗口来监视和控制在本地系统上运行的进程。
用户可以使用下列命令来启动CDE进程控制器
# /usr/dt/bin/sdtprocess &
进程控制器可以按照字母或者数字对进程进行排序。
用户可以使用find命令来初始化一个查找
可以通过选中进程,然后按Concrol+c或者点击process菜单中的kill来停止一个进程。
Prstat命令
Prstat命令交互式的检查和显示关于在系统上活动的信息。
这个命令允许用户查看指定进程的信息,UID,CPU ID,或者处理器设置。默认情况下,prstat按照CPU的利用率显示所有进程的信息。
# prstat
退出prstat输入q
prstat命令的相关描述
PID:进程的识别号码
USERNAME:进程所有者使用的登陆用户名
SIZE:进程在虚拟内存中的总长度
RSS:进程常驻部分的长度(K字节,M字节,G字节);即交换区
STATE:进程的状态
Cpu:进程正在CPU上运行
Sleep:进程正在等待一个事件(线程)的完成
Run:进程正处在运行队列
Zombie:进程终止并且没有父进程等待
Stop:进程是停止的
PRI:进程的优先权
NICE:在计算进程优先权中使用的值
TIME:进程执行的累积时间
CPU:进程对CPU的利用率
PROCESS/NLWP:进程名/进程中的轻量级进程号码
个人小注:
LWP是进程的轻量级进程,主要用于进程间通信。几个相同根源的进程是共享一个轻量级进程的,这样进程在互相切换时,就不必调用每个进程的上下文,从而大大提高了系统的速度。
上下文进程可以分成多个线程在多个CPU上同时运行,上下文就是线程在虚拟内存中的堆栈中的线程的环境。如果要从一个线程切换到另外一个线程,主要的办法就是切换2个线程的上下文。而原来的线程和他的上下文则被保存起来等待下次调用或者优先级高的线程执行完毕后再切换回原来执行的线程,以继续执行。
此部分的详细描述,请见Solaris内核管理一书。
Prstat命令的一些选项
-a在同一时间分开的显示关于进程的报告。
-c在前一个报告后面连续的显示新的报告
-n nproc限制显示该号码
-p pidlist只报告列出了PID的进程
-s key按key值递减排序。包括5个可能的key值:cpu,time,size,rss和pri。用户在同一时间只能显示一个
-t报告没有用户的总共使用的统计
-u euidlist只报告列出的有效的UID的进程
-U euidlist
调度自动执行的命令
用户可以通过使用at命令在一个指定的时间调动执行一个工作。
用户可以通过使用crontab文件在一个正常的间隔中重复的执行调度。
Crontab命令
Crontab文件是用于在正常的调度间隔中,自动执行命令或者重复执行脚本的。所有crontab文件是都是在/var/spool/cron/crontabs/username中维护。
Crontab命令允许用户查看,编辑或者删除crontab文件。
Crontab文件格式
一个crontab文件由命令组成,每一行,都将执行一个正常间隔。
每一行的开始包括要告诉cron进程什么时间执行命令的日期和时间信息。
开始的5个区域是通过空格键分开的,并且指出什么时候命令会被执行。
10 3 * * 0 /usr/lib/newsyslog
10,分钟区域,可以包含0-59
3,小时区域,可以包含0-23
第一个*,日区域,可以包含1-31
第二个*,月区域,可以包含1-12,January到December
0,周区域,可以包含0-6,0是星期天
/usr/lib/newsyslog,命令区域,包含通过cron执行的命令
在这5个地区可以使用下列规则
n单值
n,p,qn,p,q生效
n-pn到p
*所有值
root用户的crontab
在Solaris操作环境中,/var/spool/cron/crontab/root是为root用户建立的crontab文件。默认情况下,普通用户不能有crontab文件。
Root用户默认包括下面的命令行
#ident“@(#)root1.1998/07/06SMI”/*SVr4.01.1.3.1*/
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
#
10 3 * * 0,4 /etc/cron.d/logchecker
10 3 * * 0 /usr/lib/newsyslog
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [-x /usr/sbin/rtc] && /usr/sbin/rtc –c >; /dev/null 2>;&1
30 3 * * * [-x /usr/lib/gss/gsscred_clean ] &&
/usr/lib/gss/gsscred_clean
使用crontab –l来显示crontab文件
要查看root的crontab文件的内容,执行下列命令:
# crontab –l
如果普通用户可以建立自己的crontab文件,那么用户自己也可以执行这个命令来查看自己的crontab文件。
Root用户可以查看任何普通用户的crontab文件,运行下面的命令:
# crontab –l username
编辑crontab文件
建立或者编辑crontab文件,执行这些步骤:
1.检测EDITOR变量是否设置成用户希望使用的编辑器。这会告诉cron使用哪个编辑器打开文件。比如
# EDITOR vi
# export EDITOR
2.运行下列crontab命令打开crontab文件或者添加一行
# crontab –e
30 17 * * 5 /usr/bin/banner “Time to go!” >; /dev/console
:wq
控制crontab访问
有两个在/etc/cron.d文件控制crontab文件的访问:/etc/cron.d/cron.deny和/etc/cron.d/cron.allow
小注:deny即拒绝,allow即允许(个人笔记)
这些文件允许只有指定的用户可以执行crontab任务,例如建立,编辑,显示或者删除他们自己的crontab文件。
Solaris操作环境默认是存在的cron.deny文件的。而cron.allow则默认不存在,所有,所有的用户(除非把他们列入cron.deny文件)可以访问crontab的。建立cron.allow文件,就可以在上面列出谁可以访问crontab命令。
这两个文件由用户名组成,每行1个。必须使用下面的规则:
如果cron.allow存在,则只有列在这个文件中的用户可以建立,编辑,显示或者删除crontab文件。
如果cron.allow不存在,所有的用户,除非把他们列入cron.deny中,就都可以建立,编辑,显示,删除crontab文件
如果2个文件都不存在,只有root可以运行crontab。
删除crontab文件。
删除crontab文件正确的方法是调用命令:
# crontab –r username
普通用户可以删除他们自己的crontab文件;可是root可以删除任何用户的crontab文件。
At命令
At命令是用于在指定的时间自动的执行一个任务,但只有一次。
命令格式
at [-m] [-r job] [-q queuename] [-t time] [date]
选项
选项可以通知cron如何去执行at任务,包括
-t time指定命令执行的时间。包括后面的格式:h,hh,hh:mm,now,noon,midnight
除非指定了am/AM或者pm/PM,否则就是24小时时钟。
Date指定一个执行命令的日期。包括下面的格式,例如:月后面加日(Jun 6),日子的名字(Friday),today,tomorrow。
-m任务执行完成之后给用户发mail。默认是给root
-r删除队列中的时间表
-q queuename指定特定的队列。
拒绝at访问
在默认情况下,Solaris操作环境包含文件/etc/cron.d/at.deny。这个文件识别禁止使用at命令的用户。文件格式是每行一个用户名
如果一个用户是被拒绝访问at命令的,当他试图使用的时候,会收到下列信息
at:you are not authorized to use at. Sorry.
如果/etc/cron.d/at.deny文件存在,但是是空的,那么所有登陆的用户都可以访问at命令。
允许at访问
在默认情况下,可以建立/etc/cron.d/at.allow列出允许使用at命令的用户。当这个文件存在,是在/etc/cron.d/at.deny之前读的。如果一个用户在2个文件中都存在,用户将被拒绝访问at命令。
当at.deny和at.allow都不存在的时候,只有root可以使用这个命令。
|
|