MACS-SCADA系统
SID开发部
专题
Sun Solaris 系统管理[V1.01]
pkill的命令格式: pkill -signal Process
在停止一个进程之前,必须知道进程的名字或者PID。使用ps或者pgrep命令来定位进程的PID。
下面的例子使用pgrep命令来定位sendmail进程的PID。 #pgrep -l mail 241 sendmail 240 sendmail #
#pkill sendmail
同时停止一个或者多个进程使用下面的命令: #kill -signal PID PID PID PID #pkill signal process process
使用kill命令在没有信号的时候默认是发送信号15给进程。这个信号通常是让进程停止。查看kill命令的信号量可以使用命令kill –l或者man。一些进程能够忽略信号15。进程不响应信号15发出的停止信号可以通过强迫使用kill或者pkill命令的信号9。 信号数 1 信号名 SIGHUP 是由于电话线或者连接终端停止引起的信号挂起。一些确切的进程比如:inetd,in.named进程挂起引起需要重新读配置文件。 SIGINT 通常是ctrl+c键组合来中断进程 SIGKILL kill进程。进程不能忽略这个信号 SIGTERM 进程停止信号。一些进程忽略这个信号 作用 Hangup 默认工作 Exit 2 9 15 Interrupt Kill Terminate Exit Exit Exit
当工作站不响应你的键盘或者鼠标输入的时候,CDE可能僵死。在这种情况下你通过rlogin命令或者telnet命令从另一个系统远程访问工作站。当你远程连接系统以后,你可以引入pkill命令停止你工作站的僵死会话。
举例如下: #rlogin sys-02 #pkill -9 Xsun or
#ps -e | grep Xsun
442 ? 0:01 Xsun #kill -9 442
193918144.doc
第 13 页 共 61 页
MACS-SCADA系统
SID开发部
专题
Sun Solaris 系统管理[V1.01]
1.4.4. 查看系统进程
进程是系统中运行的程序。所有的进程都被分配给一个唯一的进程标示符(PID)号,用于让kernel跟踪和管理进程。PID号是root用户和其他用户用于标示和控制他们的进程。
? 使用CDE进程管理
Solaris OS Common Desktop Environment (CDE)提供进程管理用于监视和控制本地系统运行的进程。
你也能够在命令行下使用CDE进程管理: # /usr/dt/bin/sdtprocess &
? 使用prstat命令
使用prstat命令检查和显示关于系统中活动进程的信息。 这个命令也可以显示指定进程的信息,UID,(CPU)IDs,或者处理器设置。默认的prstat命令显示的所有信息是以CPU占用率进行排序的。可以使用priocntl命令来分配进程的优先级和管理进程的优先权。
prstat报告的内容
? PID 进程的PID号 ? USERNAME 登陆用户名或者进程UID的所有者 ? SIZE 进程总体虚拟内存的大小 ? RSS 进程驻留大小设置Kbyte Mbyte Gbyte. ? STATE cpu进程运行在那个CPU上。Sleep进程等待一个事件的完成。
Run进程在运行队列中zombie进程停止但是父进程并不等待stop进程停止。 ? PRI 进程的优先级 ? NICE 计算优先级的数值 ? TIME 进程累积运行时间 ? CPU 进程最近占用CPU的百分比 ? PRCESS/NLWP 进程名/在进程中的轻量进程号
prstat的命令参数
? -a 同一时间分开显示关于进程和用户的报告。 ? -c 在以前报告的基础上持续输出报告 ? -n proc 限制输出的行数 ? -p pidlist 在报告列表中只给出进程的PID。 ? -s key 按照给出的关键字进行降序排列。这个5个关键字包括cpu time
size rss pri 一个时间你可以只使用一个关键字。 ? -S key 按照给出的关键字进行升序排列。 ? -t 任何一个用户使用情况的汇总报告 ? -u euidlist 只报告EUID的进程 ? -U uidlist 报告真实的UID进程
193918144.doc
第 14 页 共 61 页
MACS-SCADA系统
SID开发部
专题
Sun Solaris 系统管理[V1.01]
1.4.5. 计划在一个时间上自动执行命令
使用at命令自动处理工作在指定的时间到来的时候。at命令的格式为: at -m -q queuename time date at -r job at –l
-m 当任务完成以后给予用户mail通知。 -r job 从队列中移出计划工作。 -q queuename 指定要操作的队列 time 指定命令的处理时间 -l 报告用户的所有计划作业
date 为指定的命令处理指定一个日期。这个日期是月名,天数或者周中的某一天。
例如下面的例子:创建一个作业在下午9点运行。 #at 9:00 pm
at>find /export/home -name core -exec file {} \\; >> /var/tmp/corelog at>
commands will be executed using /sbin/sh
job 1098648000.a at Mon Oct 25 21:00:00 2004
显示关于作业处理的信息 #at -l 1098648000.a
1098648000.a Mon Oct 25 21:00:00 2004
显示当前作业的情况
# ls -l /var/spool/cron/atjobs total 4
-r-Sr--r-- 1 root root 1044 Oct 25 13:48 1098648000.a
你也可以使用at命令移出作业 例如:
#at -r 1098648000.a #at -q
Rank Execution Date Owner Job Queue Job Name
root可控制at命令的访问通过at.deny和at.allow文件。 /etc/cron.d/at.deny文件
默认的Solaris OS有/etc/cron.d/at.deny文件。这个文件标示禁止使用at命令的用户。这个文件的每行都是一个用户名。这个文件初始为:
daemon bin nuucp
193918144.doc
第 15 页 共 61 页
MACS-SCADA系统
SID开发部
专题
Sun Solaris 系统管理[V1.01]
listen nobody noaccess
当一个被禁止访问at命令的用户在尝试使用的时候会接受到以下的消息: at: you are not authorized to use at. Sorry.
如果/etc/cron.d/at.deny文件为空则所有的用户都可以访问at命令。
/etc/cron.d/at.allow文件
默认情况下/etc/cron.d/at.allow文件并不存在(除了那些在/etc/cron.d/at.deny文件列出的用户)都可以创建at作业。创建文件你列出那些可以使用at作业的用户。
/etc/cron.d/at.allow文件的每行都是由用户名组成的。
在at.allow文件和at.deny文件之间有以下的规则:
? 如果at.allow文件存在,只有在文件中列出的用户才可以执行at命令
? 如果at.allow文件不存在,除了at.deny文件中的用户外其他用户都可以执行at命令。 ? 如果两个文件都存在,则只有root可以执行at命令 ? 如果用户在2个文件中,则用户是拒绝使用at命令的。
1.4.6. 自动重复执行作业计划
可以使用cron来灵活规律的重复执行命令。用户能够通过提交cron来灵活的修改crontab文件。所有的crontab文件都保存在/var/spool/cron/crontabs目录下并且是以创建cron作业的用户的登陆名来存储的。
cron进程负责这些作业的安排和运行。
clock进程,cron在系统启动的时候在后台持续运行。
crontab文件每行是由6部分组成。每部分由空格或者tab分开。前面5部分是命令计划运行的时间和日期。最后一部分是命令的完整路径。
例如:
10 3 * * 0 /usr/sbin/log/adm
第一部分:分钟的值在0~59之间。 第二部分:小时的值在0~23之间
第三部分:每月的天数的值在1~31之间 第四部分:月数的值在1~12之间 第五部分:周中天数0~6之间 最后一部分是全路径的命令
数值 规则 举例
N 段匹配的值为n 比如前面的小时和分钟为一个为3和10 n,p,q 如果匹配的值为n 通过0,10,20,30,40,50来代表每10分钟 p,q
n-p 匹配的值在n和p之间 可以通过1-4来表示早上1点到4点 * 匹配所有合法的值 如果在月段上为星则代表所有的月
193918144.doc
第 16 页 共 61 页

