- プロセス管理PS、トップ
- タスクスケジューラのcrontab
プロセス管理
コンセプト:プロセスを実行するための独自の仮想アドレス空間内の独立したプログラムです。
プロセスと手順の違い:プログラムは単にコマンドの静的セットではなく、システムリソースの動作であり、プロセスはいつでも可能性が変更され、ダイナミック、プログラムを実行するためにシステムリソースを使用して。プログラムは、複数のプロセスを開始することができます。そして、比較してのプロセス。仕事は、特定の順序で実行するコマンドのシリーズです。簡単なコマンドは、パイプやリダイレクトを使用する場合は特に、複数のプロセスを含むことができます。プロセスは、次の特性があります。
- ダイナミクス:プロセスの本質は、プログラムは、マルチチャネル・プログラミング・システムのプロセスになると、初期プロセスは動的で実行され、動的消光。
- 並行性:任意のプロセスが他のプロセスと一緒に同時に実行することができます。
- 独立性:プロセスが独立して動作することができる基本的な単位でなく、リソースの割り当てと独立したユニットのスケジューリングシステムです。
- 非同期:プロセス間の相互拘束のように、プロセスが不連続で行われ、それは独立した、予測不可能なペースでの処理が前方に移動すること、です。
- 構造:プログラム、データ及び処理によって三つの部分のプロセス制御ブロック。
- 異なるプロセスは、同じプログラムの複数を含むことができる:別のデータセット内のプログラムは、異なるプロセスを構成し、異なる結果を得ることができるが、実行時に、プログラムの変更が発生することができません。
Linuxシステムでは三つのプロセスから構成されています。
- 対話型プロセス:シェルとプロセス制御を開始し、フォアグラウンドで実行されている対話型のプロセスは、バックグラウンドで実行することができます。
- バッチプロセスは:かかわらず、端末の、完了するまでに指定された時間に一連の処理を手配します。
- デーモン:ように名前を付けて、そのようなcrond、rsyslogdなどのリアルタイムオペレーティングシステムのタスクを、実行するために、ブート時にシステムを起動します。
Viewシステムのプロセス
- psコマンドの構文:PS [オプション]
オプション | 意味 |
---|---|
-A | すべてのプロセスを表示します |
-N | これらの指定された基準記号を除く全てのプロセスを選択します |
-a | 負のセッションリーダーやプロセスではない端末に関連付けられたすべてのプロセスを表示 |
-d | すべてのプロセスを表示(セッションリーダーを除外) |
-e | すべてのプロセスを表示します |
T | 現在の端末のすべてのプロセスを表示します |
A | 他のユーザーを含むすべてのW / TTY、 |
R | 表示処理は、のみで動作します |
バツ | / O制御のtty W治療 |
-c | -lオプションで異なるスケジューリング情報を表示します |
C | 、プロセスを列挙し、各プロセス本当のコマンド名を示し、パス識別子、パラメータや常駐サービスが含まれていない場合 |
-C <コマンド名> | コマンド名表示処理を押します |
-G <ユーザー名またはグループ名の本当のGID> | グループのGIDまたはグループ名で実質的な進展を表示 |
-U <ユーザー実UIDまたはユーザー名> | 実ユーザのUIDまたはユーザー名の表示方法によれば、 |
-g <グループ名> | セッションまたは有効なグループ名の表示処理を選択します |
-p <プロセスID> | プロセスID表示の処理 |
-s <セッションID> | プロセスのセッションIDを表示します。 |
-t <ターミナル> | 端末表示プロセスを押します |
-u <有効なユーザー名またはユーザーのUID> | 有効なユーザーUID表示処理により、 |
U <ユーザー名> | ユーザプロセスに属する表示 |
T <ターミナル> | 端末表示プロセスを押します |
-f | UID、PPID、CとSTIMEフィールドを表示します |
-jまたはJ | ジョブ制御プロセスを用いた表示形式 |
S | 採用プロセス信号フォーマット処理 |
V | 仮想メモリのフォーマットを表示するためのプロセス |
-lまたはL | 手順詳細な表示形式を使用して |
で | ユーザー指向のフォーマット処理を表示するには |
P <プロセスID> | ただ、異なるフォーマットのリストで、プロセスの指定されたプロセスID、および-pオプションと同じ効果を表示します |
L | リスト情報の出力フィールド |
F | 結果は、プロセス間の関係を表す、ASCII文字でツリーを示しています。 |
R | のプロセスの終了だけを表示します |
E | プロセスを一覧表示すると、ディスプレイの環境変数は、各プロセスで使用されます |
-w或w | プレスワイドフォーマットディスプレイ出力 |
-u | ユーザーの印刷形式、表示開始時刻のユーザ名とプロセス |
-バツ | 制御端子なしのプロセスディスプレイ |
-t <端末ID> | 端末表示プロセスの数を指定します。 |
n個 | 数字を持つユーザーとWCHANフィールドを表示します |
時間 | タイトルバーを表示しません |
-H | ディスプレイのツリー構造、表現のプロセスとの関係 |
-m又はm- | プロセスの背後に表示スレッド |
-and | -lオプションが表示されていないF(フラグ)出力フィールドで使用した場合、フィールドADDRフィールドRSSを交換します |
例:ビューcrondプロセスが実行されています
[root@localhost ~]# ps -ef|grep crond
root 6571 1 0 03:04 ? 00:00:00 /usr/sbin/crond -n root 7457 7383 0 03:28 pts/0 00:00:00 grep --color=auto crond
コンソール端末なしですべてのプロセスを表示し、ユーザー名が表示され、時間のプロセスを開始します。
[root@localhost ~]# ps -aux
TTY1端子の下に表示処理
[root@localhost ~]# ps -t tty1
PID TTY TIME CMD
6572 tty1 00:00:00 agetty
- topコマンド:ディスプレイは、現在のプロセスとそのメモリとCPU使用率など、それらについての重要な情報を実行しています。topコマンドを終了するにはqキーを使用します
コマンド構文:トップ[オプション]
オプション | 意味 |
---|---|
-b | バッチモードを使用します |
-c | カラム処理は、コマンド名、パスおよびパラメータを含む、各プロセスの完全なコマンドを表示する場合 |
-d <間隔を秒> | 秒単位で計算間隔実行状態監視方法。 |
-私 | アイドル無視するか、ゾンビプロセスとなっています |
-n <実行> | 更新監視情報の数を設定します。 |
-S | 使用累计时间模式 |
-u<用户名或有效用户UID> | 仅监控指定有效用户UID或用户名匹配的进程 |
-p<进程PID> | 仅监视指定进程的ID的进程 |
-U<用户名或用户UID> | 仅监视指定用户UID或用户名匹配的进程 |
例子:只显示root用户的进程
[root@localhost ~]# top -u root
kill命令杀死进程
命令语法:kill [选项] [进程号]
选项 | 含义 |
---|---|
-s<信号> | 指定发送的信号 |
-l | 显示信号名称的列表,一共62个 |
例如:强制杀死进程号为6571的进程
[root@localhost ~]# ps -ef|grep crond
root 6571 1 0 03:04 ? 00:00:00 /usr/sbin/crond -n root 7534 7383 0 03:48 pts/0 00:00:00 grep --color=auto crond [root@localhost ~]# kill -9 6571 [root@localhost ~]# ps -ef|grep crond root 7536 7383 0 03:49 pts/0 00:00:00 grep --color=auto crond
任务计划:在固定的时间上触发某个作业,就需要创建任务计划,按时执行该作业。使用cron实现任务计划可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的。
- 安装crontabs和cronie软件包
[root@localhost ~]# yum -y install vixie-cron
- 控制crond服务 使用以下命令启动crond服务
[root@localhost ~]# systemctl start crond.service
使用以下命令在重新引导系统时自动启动crond服务
[root@localhost ~]# systemctl enable crond.service
[root@localhost ~]# systemctl is-enabled crond.service
enabled
- /etc/crontab文件是cron的默认配置文件,内容如下
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
其中#号开始的行是注释内容,不会被处理。
前面3行是用来配置cron任务运行环境的变量。/etc/crontab文件中的每一行都表示一项任务,它的格式如下
minute hour day month day of week user-name command
内容 | 描述 |
---|---|
minute | 分钟,0~59的任意整数 |
hour | 小时,0~23的任意整数 |
day | 日期,1~31的任意整数(如果指定了月份,则必须是该月份的有效日期) |
month | 月份,1~12的任意整数(或使用月份的英文简写入Jan、Feb等) |
day of week | 星期,0~7的任意整数,这里的0或7代表星期日(或使用星期的英文简写入Sun、Mon等) |
user-name | 执行命令的用户 |
Command | 要执行的命令或者是自己编写的脚本 |
/etc、crontab文件中可以下表的时间格式
时间格式 | 描述 |
---|---|
* | 可以用来代表所有有效的值。如月份值中的型号意味着在满足其他制约条件后每月都执行该命令 |
- | 指定一个整数范围。比如1-4意味着整数1、2、3、4 |
, | 指定隔开的一系列值指定一个列表。比如3,4,6,8表明这四个指定的整数。 |
/ | 可以用来指定间隔频率。在范围后加上/<integer>意味着在范围内可以跳过integer。如"0-59/2"可以用来在分钟字段上定义时间间隔为两分钟。间隔频率值还可以和星号一起使用,如"*/3"的值可以用在月份字段中表示每3个月运行一次任务。 |
- /etc/crontab文件配置举例 在每天晚上的21:30执行/root、backup.sh
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
30 21 * * * root /root/backup.sh
在每星期六、星期日的1:20执行一个find命令,查找相应的文件
20 1 * * 6,0 root /bin/find / -name core -exec rm {} \;
- /etc/cron/d目录:在/etc/cron.d目录中创建文件(该目录下所有文和/etc/crontab文件使用一样的配置语法)来实现。例如:
[root@localhost ~]# ls /etc/cron.d
0hourly
[root@localhost ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
使用crontab命令实现任务计划
- cronta命令简介 root以外的用户可以使用crontab命令配置cron任务。所有用户定义的crontab都被保存在/varspool/cron目录中,并使用创建它们的用户身份来执行。
- 以某位用户身份一个crontab项目
- 以该用户身份登录
- 然后输入crontab -e命令,就进入编辑器编辑该用户的crontab了。(该编辑器是由VISUAL或EDITOR环境变量指定的,文件格式和/etc/crontab相同)
- 编辑成功保存后,该文件会根据用户名被保存在/var/spool/cron/<username>文件中。
- crond守护进程每分钟都检查/etc/crontab文件、/etc/cron.d目录以及/var/spool/cron目录中的改变。如果发现改变,它们就会被载入内存。
-
命令语法:crontab [选项] crontab [选项] [文件] 选项|含义 ---|--- -u<用户名>|用户名,如果使用自己的用户名登录,就不需要使用该选项 -e|编辑用户的crontab -l|列出用户的crontab中的内容 -r|删除用户的crontab -i|删除用户的crontab前进行提示
-
创建crontab 例子:以用户zhangsan登录系统,创建crontab
[root@localhost ~]# su - wangwu
[wangwu@localhost ~]$ date
Sat Jul 27 05:41:34 EDT 2019
使用crontab -e命令打开vi编辑器,编辑成功后查看,切换为root用户查看(普通用户没有权限打开该文件)
[wangwu@localhost ~]$ su - root
Password:
Last login: Sat Jul 27 05:38:10 EDT 2019 from 192.168.64.1 on pts/0 [root@localhost ~]# cat /var/spool/cron/wangwu
- 编辑crontab过程中可以在每个条目指示加一条注释,这样就可以知道它的功能、运行时间,更为重要的是指定这是哪位用户的作业。
- 列出crontab: 以root用户列出wangwu的crontab
[root@localhost ~]# crontab -u wangwu -l
- 删除crontab:删除crontab同时会删除/var/spool/cron目录中指定有用户的文件
例如:以普通用户wangwu删除自己的crontab
[wangwu@localhost ~]$ crontab -r
- 恢复丢失的crontab文件(找到系统自动备份的位置/var/spool/cron/wangwu)
命令语法:crontab [文件] 例如:以wangwu登录恢复丢失的crontab文件
[wangwu@localhost ~]$ crontab /home/wangwu/wangwucron
摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著