《Linux – Linux基础》第3章 vim使用与Linux操作和命令(二)

3.4定时任务调度

3.4.1 crond简介

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。/etc/crontab文件包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。下面是几个特殊的文件介绍:
a) 文件:/etc/cron.deny 该文件中所列用户不允许使用crontab命令
b) 文件:/etc/cron.allow 该文件中所列用户允许使用crontab命令
c) 文件:/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

3.4.2 crond文件

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command

其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

 星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如
/10,如果用在minute字段,表示每十分钟执行一次。

sBHFhT.png

图3

3.4.3 crond服务

1.确认crontab是否安装

crontab -l

sBHVc4.png

如果报 “command not found” ,就说明该crontab服务没有安装。如果报 “no crontab for root” ,就说明已经安装crontab服务了,请跳过步骤一,至于出现这个提示的解决办法请往下看。

2.安装crontab
 centos系统,请执行以下命令:
//vixie-cron软件包是cron的主程序;  

yum install -y vixie-cron  

//rontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序

yum install crontabs

//启动服务   

/sbin/service crond start 或者 systemctl crond start

//加入开机自动启动

chkconfig –level 35 crond on

 ubuntu、debian系统,请执行以下命令:
//安装crontab服务  

apt-get install cron  

//启动crontab服务(同时还有service cron stop 停止服务,service cron restart 重启服务)

service cron start

3.测试是否安装成功了
继续执行上面第一条命令:crontab -l
这时会出现 “no crontab for root” 这是由于你还没有创建任何定时任务或者命令打错,即没有使用crontab -e命令去创建任何任务。但是到了这里,你的安装基本可以了。

4.服务操作说明
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

3.4.4 crontab命令详解

1、命令格式
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

2、命令功能
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

3、命令参数
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

 特殊符号的说明
* 代表任何时间。 比如第一个“*”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。 比如“0 8,12,16 命令”, 就代表在每天的8点0分, 12点0分, 16点0分都执行一次命令
– 代表连续的时间范围。 比如“0 5
1-6命令”, 代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。 比如“
/10 命令”, 代表每隔10分钟就执行一遍命令

4、常用方法
1.创建一个新的crontab文件
在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑profile文件,在其中加入这样一行:
EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, davecron。在该文件中加入如下的内容。

# (put your own initials here)echo the date to the console every
# 15minutes between 6pm and 6am
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出。确信前面5个域用空格分隔。
在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为crontab命令的参数:
crontab davecron

现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

2.列出crontab文件
为了列出crontab文件,可以用:
crontab -l
0,15,30,45,18-06 * /bin/echo date > dev/tty1
你将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对crontab文件做一备份:

crontab -l > $HOME/mycron
这样,一旦不小心误删了crontab文件,可以用上一节所讲述的方法迅速恢复。

  1. 编辑crontab文件
    如果希望添加、删除或编辑crontab文件中的条目,而E D I TO R环境变量又设置为v i,那么就可以用v i来编辑crontab文件,相应的命令为:
    crontab -e

可以像使用v i编辑其他任何文件那样修改crontab文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, cron会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。我们在编辑crontab文件时,没准会加入新的条目。例如,加入下面的一条:

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

现在保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。现在让我们使用前面讲过的crontab -l命令列出它的全部信息:
crontab -l

# (crondave installed on Tue May 4 13:07:43 1999)
# DT:ech the date to the console every 30 minites
0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1
# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

4.删除crontab文件
要删除crontab文件,可以用:
crontab -r

5.恢复丢失的crontab文件
如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/< username>,其中< username>是用户名。如果由于权限问题无法完成拷贝,可以用:
crontab < filename>

其中,< filename>是你在HOME目录中副本的文件名。
建议你在自己的HOME目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。

有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按< Ctrl-D>,否则你将丢失crontab文件。

5、使用实例
每1分钟执行一次command
* command

每小时的第3和第15分钟执行
3,15 command

在上午8点到11点的第3和第15分钟执行
3,15 8-11 * command

每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 /2 * command

每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 1 command

每晚的21:30重启smb
30 21 * /etc/init.d/smb restart

每月1、10、22日的4 : 45重启smb
45 4 1,10,22 /etc/init.d/smb restart

每周六、周日的1 : 10重启smb
10 1 6,0 /etc/init.d/smb restart

每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * /etc/init.d/smb restart

每星期六的晚上11 : 00 pm重启smb
0 23 6 /etc/init.d/smb restart

每一小时重启smb
* /1 /etc/init.d/smb restart

晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * /etc/init.d/smb restart

每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart

一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本
01 root run-parts /etc/cron.hourly

run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

 综合实例

题目:每隔一分钟,将当前的日期和日历都追加到/root/mycal文件中
实现:
1)编写文件/root/mytask.sh,添加以下内容:
date >> /root/mycal
cal >> /root/mycal

2)修改mytask.sh执行权限

chmod 744 mytask.sh

3) # crontab -e
*/1 /root/mytask.sh

【注】命令之间有空格。不然会出现"/tmp/crontab.sdXvj4":5: bad minute errors in crontab file, can’t install. Do you want to retry…错误。

4)成功

sBbAat.png

5)查看mycal文件
sBbZPf.png

成功!

3.4.5 crontab使用注意事项

1、注意环境变量问题
有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。

不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:
1)脚本中涉及文件路径时写全局路径;
2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh

!/bin/sh

source /etc/profile
export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &
3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:
0 . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

2、注意清理系统用户的邮件日志
每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

例如,可以在crontab文件中设置如下形式,忽略日志输出:
0 /3 /usr/local/apache2/apachectl restart >/dev/null 2>&1
“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

3、系统级任务调度与用户级任务调度
系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab -uroot -e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

4、其他注意事项
新创建的cron job,不会马上执行,至少要过2分钟才执行。
如果重启cron则马上执行。当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

千万别乱运行crontab -r。它从crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d

3.5 Linux磁盘分区、挂载

3.5.1分区的相关知识

 分区的方式

1) mbr分区:

1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性

2) gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB, 1PB=1024 TB )
3.windows7 64位以后支持gtp

 windows下的磁盘分区

sBbJiV.png

图4

 Linux分区
1) Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
2) Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

sBbDd1.png

图5目录和分区的对应关系

 Linux硬盘说明
1) Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2) 对于IDE硬盘,驱动器标识符为“hdx\~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘, b为基本从属盘, c为辅助主盘, d为辅助从属盘) ,“\~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例, hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3) 对于SCSI硬盘则标识为“sdx\~”, SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

 查看所有设备挂载情况
命令 : lsblk 或者 lsblk -f

sBbIot.png

3.5.2 Linux分区挂载操作实例

我们以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念。

1)虚拟机添加硬盘
在【虚拟机】 菜单中,选择【设置】 ,然后设备列表里添加硬盘,然后一路【下一步】 ,中间只有选择磁盘大小的地方需要修改,笔者又添加了30G,至到完成。然后重启系统(才能识别)!

2) 分区
在分区之前可以先看看分区的帮助。

fdisk /dev/sdb

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition   #删除分区
   l   list known partition types   #列出文件类型
   m   print this menu  #帮助信息
   n   add a new partition  #新建分区
   o   create a new empty DOS partition table
   p   print the partition table    #打印分区列表
   q   quit without saving changes  #不保存退出
   s   create a new empty Sun disklabel
   t   change a partition's system id  #选择分区类型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit #保存并退出
   x   extra functionality (experts only)

上面的分区的以下命令参数,参考使用,接下来正式进入分区了,接着前文的操作。

 删除原有分区

sBbLQg.png

【注意】有几个分区就删除几个分区。
删除完所有分区后如下显示。

sBqGmd.png

 新建分区
【第一个分区】
sBqYTI.png

【第二个分区】
sBqaff.png

【第三个分区】
sBq01S.png

【第四个分区】
sBqsmj.png

最后我们再次查看分区。
sBqgkq.png

创建4个分区,前3个大小为1G,第4个分区大小为剩余空间大小。可以看到4个分区类型全部为LINUX。

 保存,退出

sBqonJ.png

3) 格式化
格式化磁盘
命令:mkfs -t ext4 /dev/sdb1//其中ext4是分区类型,其他3个分区类似。

4) 挂载
挂载: 将一个分区与一个目录联系起来,
• mount 设备名称 挂载目录
例如: mount /dev/sdb1 /newdisk
• umount 设备名称 或者 挂载目录
例如: # umount /dev/sdb1 或者 umount /newdisk

5) 设置可以自动挂载
永久挂载: 通过修改/etc/fstab实现挂载
添加完成后 执行mount –a 即刻生效

sBqbA1.png

 查询系统整体磁盘使用情况
命令:df [参数] //查询指定目录的磁盘占用情况,默认为当前目录
参数:
-T表示显示文件系统的文件格式
-h表示物理文件大小按照兆字节为单位
-k表示物理文件系统大小按照千字节为单位
-l表示仅列出本地文件系统
-s 指定目录占用大小汇总
-a表示显示所有文件的使用情况
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值

sBx5jK.png

 查询指定目录的磁盘占用情况
命令:du [-a|-k|-s]
参数:
-a表示仅列出空间的文件数
-k表示列出空间的使用情况
-s 指定目录占用大小汇总
-h 带计量单位
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
实例:
查询 /opt 目录的磁盘占用情况,深度为1。

sBxqNd.png

综合实例:
1)统计/home文件夹下文件的个数

ls -l /home | grep "^-" | wc -l

sBxvgP.png

2) 统计/home文件夹下目录的个数

ls -l /home | grep "^d" | wc –l

sBziNj.png

3) 统计/home文件夹下文件的个数,包括子文件夹里的

ls -lR /home | grep "^-" | wc -l

sBzVg0.png

4) 统计文件夹下目录的个数,包括子文件夹里的

ls -lR /home | grep "^d" | wc –l

sBzubF.png

5) 以树状显示目录结构实例:

tree

sBzl59.png

3.6进程管理

 基本介绍
1) 在LINUX中,每个执行的程序(代码) 都称为一个进程。每一个进程都分配一个ID号。
2) 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
3) 每个进程都可能以两种方式存在的。 前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4) 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

 显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
命令:ps [options]//显示进程的动态

注意:-A列出所有的进程,-w显示加宽可以显示较多的资讯,-au显示较详细的资讯,-aux=-ef显示所有包含其他使用者的行程。
状态标志:
D:不可中断的静止, R:正在执行中,
S:阻塞状态, T:暂停状态,
Z:不存在但无法消除, < :高优先级的进程,
N: 低优先级的进程, L: 有内存分页分配并在内存中。

表1ps显示的信息选项

sBzDPA.png

ps详解
命令: ps –aux|grep xxx , 比如我看看有没有sshd服务
指令说明
• System V展示风格
• USER:用户名称
• PID:进程号
• %CPU:进程占用CPU的百分比
• %MEM:进程占用物理内存的百分比
• VSZ:进程占用的虚拟内存大小(单位: KB)
• RSS:进程占用的物理内存大小(单位: KB)
• TT:终端名称,缩写 .
• STAT:进程状态,其中S-睡眠, s-表示该进程是会话的先导进程, N-表示进程拥有比普通优先级更低的优先级, R-正在运行, D-短期等待, Z-僵死进程, T-被跟踪或者被停止等等
• STARTED:进程的启动时间
• TIME: CPU时间,即进程使用CPU的总时间
• COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

sDS3dg.png

实例
要求:以全格式显示当前所有的进程,查看进程的父进程。
• ps -ef是以全格式显示当前所有的进程
• -e 显示所有进程。 -f 全格式。
• ps -ef|grep xxx
• 是BSD风格
• UID:用户ID
• PID:进程ID
• PPID:父进程ID
• C: CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
• STIME:进程启动的时间
• TTY:完整的终端名称
• TIME: CPU时间
• CMD:启动进程所用的命令和参数

 查看进程树pstree
命令:pstree [-a|-c]//用树状图显示进程,直观的来看进程信息
注意:-a表示显示进程的完整性,-c如果有重复的进程,则分开列出。-p :显示进程的PID
-u :显示进程的所属用户

 终止进程kill和killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
命令:kill [选项] 进程号(功能描述:通过进程号杀死进程)
命令:killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9 :表示强迫进程立即停止

注意:kill -l用于查看所有信号

 动态监控进程
top与ps命令很相似。它们都用来显示正在执行的进程。 Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
命令:top [选项]

参数:
-d 秒数 指定top命令每隔几秒更新。 默认是3秒在top命令的交互模式当中可以执行的命令:
-i 使top不显示任何闲置或者僵死进程。
-p 通过指定监控进程ID来仅仅监控某个进程的状态。

sDSBeU.png

交互操作说明:
P 以CPU使用率排序, 默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top

 服务(service)管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

service管理指令:
service 服务名 [start | stop | restart | reload | status]
【注】在CentOS7.0后 不再使用service ,而是 systemctl

查看服务名:
方式1:使用setup -> 系统服务 就可以看到。
方式2: /etc/init.d/服务名称
sDScWR.png

服务的运行级别(runlevel):
查看或者修改默认级别: vi /etc/inittab
Linux系统有7种运行级别(runlevel):常用的是级别3和5
• 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
• 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
• 运行级别2:多用户状态(没有NFS),不支持网络
• 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
• 运行级别4:系统未使用,保留
• 运行级别5:X11控制台,登陆后进入图形GUI模式
• 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

开机的流程说明:
sDSWy6.png

chkconfig指令:
• 介绍:通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
• 基本语法
1) chkconfig 服务名 –list
sDSHfA.png

2) 查看服务 chkconfig –list|grep xxx
sDSLlt.png

3) chkconfig –level 5 服务名 on/off//修改服务在不同运行级别的自启动状态
【注】chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效.

 监控网络状态
查看系统网络情况netstat
命令:netstat [选项]
参数:
-an 按一定顺序排列输出
-p 显示哪个进程在调用

sDSO6P.png

例子
请查看服务名为 sshd 的服务的信息。
sDSXOf.png
检测主机连接命令ping:是一种网络检测检测工具,它主要是用检测远程主机是否正常,或是两部主机间的介质是否为断、网线是否脱落或网卡故障。
如: ping 对方ip地址

Related posts

Leave a Comment