vmstat 命令:虚拟内存信息
vmstat [options] [delay [count]]
vmstat 2 5
procs:
r :可运行(正运行或等待运行)进程的个数,和核心数有关
b :处于不可中断睡眠态的进程个数( 被阻塞的队列的长度)
memory: :
swpd: 交换内存的使用总量
free :空闲物理内存总量
buffer :用于buffer 的内存总量
cache :用于cache 的内存总量
swap:
si :从磁盘交换进内存的数据速率(kb/s)
so :从内存交换至磁盘的数据速率(kb/s)
io:
bi :从块设备读入数据到系统的 速率(kb/s)
bo: 保存数据至块设备的 速率
system:
in: interrupts 中断速率,包括时钟
cs: context switch 进程切换速率
cpu:
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41 前, 包括IO-wait time.
wa: Time spent waiting for IO. 2.5.41 前,包括in idle.
st: Time stolen from a virtual machine. 2.6.11 前, unknown.
选项:
-s: 显示内存数据
[root@localhost ~]# vmstat 1 3 #一秒显示依次,3次后结束
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 1340 90868 0 253020 0 0 5 4 40 53 0 0 100 0 0
0 0 1340 90852 0 253020 0 0 0 0 122 173 0 1 99 0 0
0 0 1340 90852 0 253020 0 0 0 0 121 164 0 0 100 0 0
[root@localhost ~]#
iostat: 统计CPU 和设备IO 信息
示例:iostat 1 10
pmap 命令:进程对应的内存映射
写数字表示进程号,而后看内存映射信息
/proc/1/masp #地址
pmap [options] pid [...]
-x: 显示详细格式的信息
示例:pmap 1
另一种实现:
cat /proc/PID/maps
[root@localhost ~]# cat /proc/1/maps
7fd420000000-7fd420029000 rw-p 00000000 00:00 0
7fd420029000-7fd424000000 ---p 00000000 00:00 0
7fd42778b000-7fd42778c000 ---p 00000000 00:00 0
7fd42778c000-7fd427f8c000 rw-p 00000000 00:00 0
7fd427f8c000-7fd427f8d000 ---p 00000000 00:00 0
7fd427f8d000-7fd42878d000 rw-p 00000000 00:00 0
7fd42878d000-7fd428791000 r-xp 00000000 fd:00 67235606 /usr/lib64/libuuid.so.1.3.0
7fd428791000-7fd428990000 ---p 00004000 fd:00 67235606
[root@localhost ~]# pmap 1
1: /usr/lib/systemd/systemd --switched-root --system --deserialize 21
00007fd420000000 164K rw--- [ anon ]
00007fd420029000 65372K ----- [ anon ]
00007fd42778b000 4K ----- [ anon ]
00007fd42778c000 8192K rw--- [ anon ]
00007fd427f8c000 4K ----- [ anon ]
00007fd427f8d000 8192K rw--- [ anon ]
00007fd42878d000 16K r-x-- libuuid.so.1.3.0
00007fd428791000 2044K ----- libuuid.so.1.3.0
View Code
dstat 命令:系统资源统计, 代替vmstat,iostat
dstat [-afv] [options..] [delay [count]]
-c: 显示cpu 相关信息
-C #,#,...,total
-d: 显示disk 相关信息
-D total,sda,sdb,...
-g :显示page 相关统计数据
-m: 显示memory 相关统计数据
-n: 显示network 相关统计数据
-p: 显示process 相关统计数据
-r: 显示io 请求相关的统计数据
-s: 显示swapped
kill 命令:
向进程发送控制信号,以实现对进程管理, 每一个信号对应一个数字,
信号名称以SIG 开头(可省略 ), 不 区分大小写
显示当前系统可用信号: kill –l,trap -l
经常使用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 停止正在运行的进程;至关于Ctrl+c
3) SIGQUIT: 至关于ctrl+\
9) SIGKILL: 强制杀死正在运行的进程 #不是什么进程都能杀死好比bash
15) SIGTERM :终止正在运行的进程 #默认是15,有的进程这么杀不死
18) SIGCONT :继续运行
19) SIGSTOP :后台休眠
#若是在后台运行的程序,用它也能进行休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP (3) 信号的简写名称:HUP
按PID :kill [-SIGNAL] pid …
kill –n SIGNAL pid;kill –s SIGNAL pid
按名称:killall [-SIGNAL] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid: effective user ,生效者
pkill -9 -u wang
-U uid: real user ,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程 名(pgrep 可用)
-a: 显示完整格式的进程 名( (pgrep 可用)
-P pid: 显示指定进程的子进程
Linux 的做业控制
前台做业:经过终端启动,且启动后一直占据终端;
后台做业:可经过终端启动,但启动后即转入后台运行(释放终端)
让做业运行于后台
(1) 运行中的做业: Ctrl+z
送到后台并休眠
(2) 还没有启动的做业:# COMMAND &
后台做业虽然被送日后台运行,但其依然与终端相关;退出终端,将关闭
后台做业。若是但愿送日后台后,剥离与终端的关系
nohup COMMAND & #screen;COMMAND
送到后台运行不与终端有关
默认是有输出的,能够重定向到垃圾箱
nohup.out #结果这个文件下会有
screen #新开终端,跟sshd不要紧
-ls 查看会话
查看当前终端全部做业:
jobs #这个只能在当前终端看当前终端的后台运行进程
后台两种状态
运行:
休眠:stop
做业控制:
fg [[%]JOB_NUM] :把指定的后台做业调回前台
bg [[%]JOB_NUM] :让送日后台的做业在后台继续运行
kill [%JOB_NUM]: 终止指定的做业
kill %1 #结束编号做业,须要用jobs先查看
对于任务的加速完成
f1.sh;f2.sh;f3.sh #这是顺序执行达不到效果
同时运行多个进程,提升效率
方法1 #必须放入后台执行
vi all.sh
f1.sh&
f2.sh&
f3.sh&
方法2
(f1.sh&);(f2.sh&);(f3.sh&) #会开子进程
方法3
{ f1.sh& f2.sh& f3.sh& }
#at命令若是时间过了,会明天去执行
包:at
at 命令:at [option] TIME
经常使用选项:
-V 显示版本信息:
-l: 列出指定队列中等待运行的做业;至关于atq
-d: 删除指定的做业;至关于atrm
-c: 查看具体做业任务
-f /path/from/somefile :从指定的文件中读取任务
-m: 当任务 被完成以后,将给用户发送邮件,即便没有标准输出
注意:做业执行命令的结果中的标准输出和错误以邮件通知给相关用户
TIME: 定义出何时进行 at 这项任务的时间
HH:MM [YYYY-mm-dd]
20:20 2016-10-10
noon, midnight, teatime (4pm) #英文单词也能用
tomorrow #明天
now+#{minutes,hours,days, OR weeks}
at now+10minutes #10分钟后自动执行
HH:MM 02:00 在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
HH:MM YYYY-MM-DD 02:00 2016-09-20
规定在某年某月的某一天的特殊时刻进行该项任务
HH:MM[am|pm] [Month] [Date]
04pm March 17
17:20 tomorrow
HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某个时间点再加几个时间后才进行该项任务
now + 5 minutes
02pm + 3 days
执行方式:
1)交互式 )输入重定向 3 )at –f 文件
依赖与atd 服务, 须要启动才能实现at 任务
at 队列存放在/var/spool/at 目录中
/etc/at.{allow,deny} 控制用户是否能执行at 任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户
才能执行at 命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行
at 命令, 而没有在 在at.deny 文件中的使用 者则可执行
若是 两个文件都不存在有 ,只有 root 行 能够执行 at
/etc/at.deny
wang
mage
/etc/at.allow
#这个两个用户会由于写入这个文件而不能执行。
#若是两个文件都写了该用户。白名单权限更高。设置白名单后,一切以白名单为主,若是这两个文件都没有,除了root所有拒绝
例:
[root@magedu6 ~]# cat /etc/rc.d/init.d/atd #命令状态确认 CentOS 6
#!/bin/sh
#
# atd Starts/stop the "at" daemon
#
# chkconfig: 345 95 5
# description: Runs commands scheduled by the "at" command at the time \
# specified when "at" was run, and runs batch commands when the load \
# average is low enough.
...省略
[root@magedu6 ~]# runlevel #确认是否启动
3 5
[root@magedu6 ~]# service atd status #查看当前状态
atd (pid 1913) 正在运行...
[root@magedu6 ~]# chkconfig --list atd
atd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
[root@localhost ~]# cat /lib/systemd/system/atd.service #CentOS 7上的状态确认
[Unit]
Description=Job spooling tools
After=syslog.target systemd-user-sessions.service
[Service]
EnvironmentFile=/etc/sysconfig/atd
ExecStart=/usr/sbin/atd -f $OPTS
...
[root@localhost ~]# systemctl is-enabled atd #确认开机是否启动
enabled
[root@localhost ~]# systemctl status atd.service # #确认是否启动,.service能够省略
● atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: inactive (dead)
[root@localhost ~]# at 09:28 #默认交互模式,echo这类终端打印 命令没打印的缘由是他以邮件方式发送给root。只要标准输出命令都要输出到/dev/null避免太多垃圾邮件
at> echo at is starting
at> <EOT>
job 3 at Wed May 10 09:28:00 2017
[root@localhost ~]# at -l #能够看到没执行的计划任务,至关于atq命令
2 Wed May 10 09:24:00 2017 a root
3 Wed May 10 09:28:00 2017 a root
at命令关机也不会丢 由于会放在 /var/spool/at/... 文件里
[root@localhost ~]# getent passwd daemon #系统用户,查看状况
daemon:x:2:2:daemon:/sbin:/sbin/nologin
View Code
at -d 4 #删除4这个计划任务
atrm 5 #删除计划任务5
at -c 7 #查看具体状况,就是看/var/spool/at这个文件
at -f atjob #直接调用文件 和sed -f 里的效果差很少。
at -m 14:34
touch 1.log
周期性任务计划:cron
相关 的程序包:
cronie: 主程序包,提供crond 守护进程及相关辅助工具
cronie-anacron :cronie 的补充 程序,用于 监控cronie任务执行 情况,如cronie 中的任务在过去该运行的时间点未能正常运行,则anacron 会随后启动一次此任务。
crontabs :包含CentOS 提供系统维护任务
chkconfig --list crond #查看启动没有
service crond status #查看启动没有
systemctl status crond #7上查看启动没有
/usr/sbin/crond #真正的程序在这
/var/spool/cron #你作的计划任务会在这
确保crond 守护处于运行状态:
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
计划周期性执行的任务提交给crond ,到指定时间会自动运行
系统cron 任务:系统维护做业
/etc/crontab
用户cron 任务:
crontab 命令
日志:/var/log/cron
时间表示法:
(1) 特定值
给定时间点有效取值范围内的值
(2) *
给定时间点上有效取值范围内的全部值
表示“每...”
(3) 离散取值
#,#,#
4) 连续取值
#-#
(5) 在指定时间范围上,定义步长
/#: # 即为步长
@reboot Run once after reboot.
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
示例:每3 小时echo 和wall 命令
0 */3 * * * centos /bin/echo “howdy”;/usr/bin/wall
“welcome to Magedu!
系统cron 任务:/etc/crontab
注释行以 # 开头
# 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
例如:晚上9 点10 分运行echo 命令
10 21 * * * centos /bin/echo "Howdy!"
#写计划任务的时候必须写明确路径让文件知道在哪找,由于不必定用一个shell。
例:
30 2 1-10,20-25 root /bin/touch /app/cron.log #写普通用户也行,但普通用户不必定有资格
* #*表明每分钟
cp -a /etc/ /paa/etcbak-`date +%F`/ #复制一个文件,由于有%因此不会成功
* * * * * root cron.sh #写入脚本调用就好,最后两个*是或,其余三个是而且。若是想实现而且,就脚本里写。
@reboot root touch /app/reboot.log #重启后执行
/var/spool/cron/ #用命令建立的才放到这里,文件里写入不存在
系统的计划任务:
/etc/crontab #能够修改文件达成,给管理员用的
/etc/cron.d/ 配置文件 #和上面那个路径差很少
/etc/cron.hourly/ 脚本
#run-parts /etc/cron.hourly #去运行这个目录下全部脚本
/etc/cron.daily/ 脚本
/etc/cron.weekly/ 脚本
/etc/cron.monthly/ 脚本
anacron
运行计算机关机时cron 不运行的任务,CentOS6 之后版本
取消anacron 服务,由crond 服务管理
对笔记本电脑、台式机、工做站、偶尔要关机的服务器及其
它不一直开机的系统很重要对颇有用
配置文件:/etc/anacrontab ,负责执行/etc/ cron.daily /etc/cron.weekly /etc/cron.monthly 中系统任务。
• 字段1 :若是在这些日子里没有运行这些任务……
• 字段2 :在从新引导后等待这么多分钟后运行它
• 字段3 :任务识别器,在日志文件中标识
• 字段4 :要执行的任务
由/etc/cron.hourly/0anacron 执行
当执行任务时,更新/var/spool/anacron/cron.daily 文件的时间戳
/usr/bin/on_ac_power #把电源拔了试试
whatis rm #查看数据库里这个命令的
#/etc/cron.daily
logrotate #用来发现日志文件是否过大,过大会分割建立个文件,保证文件不会太大
mandb #更新数据库 7上
mlocate
#ls /etc/cron.daily/ #脚本目录
#cat /etc/cron.daily/tmpwatch #这个文件会自动清除一些临时文件
CentOS6 使用/etc/cron.daily/tmpwatch 定时清除临时文件
CentOS7 使用systemd-tmpfiles-setup 服务实现
配置文件:
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles/*.conf
/usr/lib/tmpfiles.d/tmp.conf
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d
命令:
systemd-tmpfiles –clean|remove|create configfile
#有特殊权限
用户cron:
crontab 命令定义,每一个用户都有专用的cron 任务文件:/var/spool/cron/USERNAME
crontab 命令:
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出全部任务 #默认只看本身的加-u才能看别人的
-e: 编辑任务;
#会建立个临时文件,不用写用户了
cd /var/spool/cron/ #文件放在这
-r: 移除当前用户全部任务
-i :同-r 一同使用,以交互式模式移除指定任务
-u user: 仅root 可运行,指定用户管理cron 任务
控制用户执行计划任务 :
/etc/cron.{allow,deny} #和at里的道理同样。 #默认也是没有allow,若是已经有了计划任务,仍是会执行,由于改的是命令如今的权限了。
#用这个命令修改后,会删除旧文件,生成新文件。
export EDITOR=vim #使不少程序默认使用vim
vipw 至关于/etc/passwd #有语法检查功能
/var/log/cron #计划任务的日志。若是误删除在这找。
一次性做业使用 at
重复性做业使用crontab
Create at time crontab -e
List at -l crontab -l
Details at -c jobnum N/A
Remove at -d jobnum crontab -r
Edit N/A crontab -e
#没有被重定向的输出会被邮寄给用户
#根用户可以修改其它用户的做业
注意:运行结果的标准输出和错误以邮件通知给相关用户
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
对于cron 任务来说,% 有特殊用途;若是在命令中要使用%,则须要转义,将%