工作管理
1、工作管理简介
Linux中的工作管理指的是在单个登录的终端中,同时管理多个工作的行为。在Linux工作管理中,其实就是将当前的工作放到后台执行。查询当前系统中的后台程序使用的命令是jobs。
在Linux中,当某些服务启动之后,如果不放入后台,他会一直占用当前的shell,例如MYSQL。如果想要执行其他操作的话,需要将mysql服务终止掉。如果不想将该服务终止,就需要将该服务放入后台。
注意事项:
a> 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。
也就是说,放入后天的服务是需要绑定终端的。Mysql服务发现了这个问题,当调用mysql服务的启动脚本时,它会将MySQL设置为可以脱离当前终端操作的服务,当MySQL服务在当前终端上放入后台时,关闭当前终端,mysql服务不会终止,但其他服务如果关闭的当前终端,服务也会跟着结束。
b> 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
例如:将ls、cd等命令房后后台是没有意义的,回车之后就会结束
c> 放入后台执行的命令不能和当前用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行
例如:将vim命令放入后台,只能暂停,不肯能继续执行。因为vim命令是需要和用户进行交互的。
2、工作管理方法
1> 把命令放入后台<以top命令为例>
在执行的命令后加" & ” # 把命令放入后台,并在后台执行 top # 按下ctrl+z快捷键,放在后台暂停
2> 查看后台工作
jobs [-l] # -l 显示工作的PID
注: “+”表示最近一个放入后台的工作,也是工作恢复时默认恢复的工作,“-”表示倒数第二个放入后台的工作
3> 将后台暂停的工作恢复到前台执行
fg %工作号 # %可以省略,但是注意工作号和PID的区别
4> 把后台暂停的工作恢复到后台执行
bg %工作号 # 后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
3、后台命令脱离登录终端执行
一般情况下,一旦把命令放入后台,只能在当前登录终端执行。一旦退出或关闭终端,后台程序就会停止。
后台命令脱离登录终端执行的方法:
1> 把需要后台执行想命令加入到/etc/rc.local 文件
开机默认创建文件 /var/lock/subsys/local,目的是为了查看系统开机时间。
如果想要后台运行的一个程序持续运行,可以把这个进程完全写到该文件中,那么该进程就可以持续运行。因为它是系统直接调用的,没有绑定到终端。
2> 使用系统定时任务crontab,让系统在指定的时间执行某个后台命令
使用系统定时任务,可能会导致不生效!!!
3> 使用nohup命令
命令格式:
nohup [命令] &
在 /root 目录下创建文件 for.sh,内容如下: nohup运行该文件 切换终端,然后可以通过 ps aux | grep for.sh 查看 |
系统资源管理
※1、vmstat命令监控系统资源
vmstat [刷新延时 刷新次数]
procs:进程信息字段
r:等待运行的进程数,数量越大,系统越繁忙
b:不可被唤醒的进程数,数量越大,系统越繁忙
memory:内存信息字段
-swpd:虚拟内存的使用情况,单位KB
-free:空闲的内存容量,单位KB
-buff:缓冲的内存容量,单位KB
-cache:缓存的内存容量,单位KB
缓存和缓冲的区别: 缓存(cache)是用来加速数据从硬盘中”读取”的,而缓冲(buffer)是用来加速数据”写入”硬盘的。 |
swap:交换分区的信息字段
-si:从磁盘中交换到内存中数据的数量,单位KB
-so:从内存中交换到磁盘中数据的数量,单位KB,
两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差
io:磁盘读写信息字段
-bi:从块设备读入数据的总量,单位是块
-bo:写到块设备的数据的总量,单位是块。
两个数越大,代表系统的I/O越繁忙
system:系统信息字段:
-in:每秒被中断的进程次数
-cs:每秒钟进行的事件切换次数。
两个数越大,代表系统与接口设备的通信飞航繁忙
cpu:CPU信息字段
-us:非内核进程消耗CPU运算时间的百分比
-sy:内核进程消耗CPU运算时间的百分比
-id:空间CPU的百分比
-wa:等待I/O所消耗的CPU百分比
-st:被虚拟机所盗用的CPU占比
※2、dmesg开机时内核检测信息
dmesg | grep CPU
显示系统的内核自检信息,对Linux来将,计算机需要自检两遍,一是硬件的BIOS自检,二是内核自检
dmesg命令是用来判断当前服务器的硬件状态。
※3、free命令查看内存使用状态
free [-b | -k | -m | -g]
选项:以 字节 | Kb | MB | GB 为单位显示,默认为Kb
- buffers/cache:相当于第一行used - buffers - cached
+ buffers/cache:相当于第一行free + buffers + cached
虽然看起来buffer和cached 占用了一部分内存,但实际上是作为缓冲和缓存存在,没有被系统的程序直接占用,是为了提高系统读写效率存在的
最后一行表示Swap的使用状况,swap是提高计算机性能尤其是高耗费内存性能的重要手段,因此不可以随意减少Swap分区的容量。当真实机内存小于4G,swap应该是内存的两倍,如果真实机的内存大于4G,swap最少要和内存一样。
※4、查看CPU信息
cat /proc/cpuinfo
proc是用来保存内存信息的目录
※5、uptime命令
uptime
显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据。
uptime命令可以查看到系统当前时间,开机到现在的时间,登录用户数目,平均负载。和top命令第一行信息一致,但top命令本身就会造成一定的负载,如果只是简单想查看系统启动时间和平均负载,可以用uptime命令。
※6、查看系统与内核相关信息
uname [选项]
选项: -a:查看系统所有相关信息
-r:查看内核版本
-s:查看内核名称
※7、查看当前Linux系统的操作位数
file /bin/ls
file之后可以追加任何一个系统外部命令,可以查看到当前操作系统的位数。需要注意的是,这里的位数与CPU的位数不一定相同,64的的电脑上也可以安装32位的操作系统
※8、查询当前Linux的发行版本
lsb_release -a
※9、列出进程打开或使用的文件信息
lsof [选项]# 列出进程调用或打开的文件的信息
选项:
-c 字符串:只列出字符串开头的进程打开的文件
-u 用户名:只列出某个用户的进程打开的文件
-p pid:列出某个PID进程打开的文件
根据文件名查进程,文件只能是系统文件,不能是用户自己创建的文件,只有系统文件才有系统进程
系统定时任务
Windows中的系统定时任务:开始-- >所有程序-- >附件-- > 系统工具-- >定时计划程序
at一次性定时任务
1> 确定at安装
chkconfig --list | grep atd # at服务是否安装 service atd restart # at服务重新启动
在服务名后加 d ,表明这是一个守护进程
2> at的访问控制
l 如果系统中有 /etc/at.allow(白名单)文件,那么只有写入/etc/at.allow 文件中的用户可以使用at 命令(/etc/at.deny文件会被忽略)
l 如果系统中没有 /etc/at.allow (黑名单)文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件中的用户不能使用at命令,但对root 用户不起作用
l 如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。默认情况下只有黑名单
3> at命令的使用
at [选项] 时间
选项:
-m:当at工作完成后,无论是否命令有输出,都用email 通知执行at命令的用户
-c 工作号:显示该at工作的实际内容
时间:
- HH:MM例如:02:30
- HH:MM YYYY-MM-DD例如:02:30 2013-07-25
- HH:MM [am|pm] [month] [date]例如:02:30 July 25
- HH:MM [am|pm] + [minutes|hours|days|weeks]例如:now + 5minutes
其他at管理命令
atq # 查询当前服务器上的at工作 atrm [工作号] # 删除指定的at任务
at定时任务执行完毕之后,atq就不会再查询到at任务
crontab定时任务
关于crontab定时任务,要介绍的细节比较多,这里作为一个单独的文章来写,链接如下:
http://muhuizz.blog.51cto.com/11321490/1868839
---------muhuizz整理