进程与计划任务

PID 进程号,用来标记各个进程;CentOS6中起始的第一个进程为init
7中为systemd

进程优先级:

系统优先级:数字越小,优先级越高

0-139(4,5中)

各有140个运行队列和过期队列

0-98,99(6中)

实时优先级:99-0:值越大优先级越高

nice值:-2019,对应系统优先级100-13999

进程状态:

运行:running;就绪:ready; 睡眠:可中断——interruotable

不可中断——uninterruptable

停止:stopped,暂停与内存,但不会被调度,除非手动启动;僵死:zombie,结束进程,父进程结束前,子进程不关闭

Linux内核:抢占式多任务(多任务同时进行,交叉运行)

进程类型:

守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程

前端进程:跟终端相关,通过终端启动的进程

注意:两者之间可以相互转化

 

pstree -p(能查看编号) {}的为线程(thread)线程之间共享资源

ps 用来查看进程信息

支持三种选项:

UNIX选项 如 -A -e

BSD选项 a

GUN –help

默认显示当前终端中的进程:

a 包含所有终端中的进程

x 包括不链接终端的进程

u 显示进程所有者的信息

f 显示进程的父进程

o 属性显示定制的信息 —— xao pid|%cpu|%mem|euid|ruid|ninice值)|pripriority|psrprocessorCPU编号)|rtprio(实时优先级)

aux(常用)

 

进程优先级

nice 命令

nice [option] [COMMAND [ARG]…]

nice -n 10 command

nice –6 command 赋予-6优先级

     renice命令

renice [-n] priority pid …

renice -9 pid 赋予-9优先级

搜索进程

预定义模式:pgrep

[option] pattern

-u uid : 生效者

-U uid :真正发起运行命令者

-t terminal :与指定终端相关的进程

-l :显示进程名

-a :显示完整格式的进程名

-P pid :显示指定进程的子进程

pidof command 直接查看进程号

 

uptime 显示当前系统时间、运行时间、几个用户登录、平均负载(1510分钟的负载,一般不超过1

top 相当于windows的任务管理器,实时监控

-b 全部显示

-d #:指定刷新时间间隔

-n # :刷新多少次后退出

首部信息的显示:

uptime 信息 —— l

tasks及CPU信息 —— t

CPU信息单独显示 —— 1

us 用户空间 sy 内核空间 ni 调整nice时间 id 空闲 wa 等待IO时间 hi 硬中断 si 软中断 st 虚拟机偷走的时间

k 终止进程 由自己输入想要终止的进程的进程号

w 将信息存到指定文件中——root下的.toprc

s 指定刷新时间间隔

 

htop 命令 更加方便

-d #:指定延迟时间

-u username:仅显示指定用户的进程

-s colume:以指定的字段进行排序

子命令

s:跟踪选定进程的系统调用

l:显示选定进程打开的文件列表

a:将选定的进程绑定至某指定CPU核心

t:显示进程树

 

 

vmstat命令:虚拟内存信息 vmstat 1 10 1s刷新 刷新10次停止

si :相对于内存来说的,从磁盘读数据交换到内存的数据速率

so :相对于内存来说的,从内存交换到磁盘的速率 ,内存不够时调用swap

-s :显示统计信息

 

iostat:统计CPU和设备IO信息

pmap: 进程对应的内存映射

-x:显示详细格式的信息

另外一种实现:cat /proc/PID/maps

 

glances C/S模式下运行glances命令

服务器模式:

glances -s -B
IPADDR

IPADDR:指明监听的本机的哪个地址

客户端模式:

glances -c IPADDR

IPADDR:要连入的服务器端地址

dstat :系统资源统计

-c:显示CPU相关信息

-C#,#total

-d:显示disk相关信息

-D total,sdasdb

-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:强制杀死正在进行的进程

15)SIGTERM:终止正在进行的进程

18)SIGCONT:继续运行

19)SIGSTOP:后台休眠

指定信号的方法:

1)信号的数字标识:1,2,9 kill -1 pid

2)信号完整名称:例如——SIGHUP

3)信号的简写名称:HUP

PIDkill [-SIGNAL] pid …

kill -n SIGNAL pid ; kill -s SIGNAL pid

按名称 : killall [-sigal] comm…

按模式:pkill [options] pattern

-SIGNAL

-u uid : 生效者

-U uid : 真正发起运行命令者

-t terminal : 与指定终端相关的进程

-l :显示进程名

-a : 显示完整格式的进程名

-P pid :显示指定进程的子进程

 

 

 

 

后台运行命令:

运行中的作业 : Ctrl +z

尚未启动的作业:

COMMAND & ;

后台作业虽然被送往后台运行,但其仍然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系:

nohup COMMAND
&

screen;COMMAND

查看当前终端所有作业:

jobs ——可以看到JOB_NUM

作业控制 :

fg JOB_NUM:把指定的后台作业调回前台

bg JOB_NUM :让送往后台的作业在后台继续运行

kill %JOB_NUM :终止指定的作业

同时运行多个进程,提高效率

方法1

vim all.sh

f1.sh &

f2.sh &

f3.sh &

方法2

f1.sh &;(f2.sh &);(f3.sh &)

方法3

{f1.sh& f2.sh& f3.sh&}

 

 

at 任务

7——systemctl is-enabled atd 查看at服务是否开机自动启动

systemctl status
atd 目前是否处于启动状态

6——chkconfig –list atd 可用来查看不同模式下的状态

service atd status
查看目前状态

at 时间

at> 输入指定命令

at>……

at> Ctrl +d 退出

ll /app 下是否生成了at.log文件
执行成功

输入的指令的标准输出不会在界面输出,会以邮件的方式通知,但是广播不会发送邮件,直接广播通知

会生成下图中的绿色文件,退出终端、重启机器,计划任务依旧会存在,执行完成后,删除文件

进程与计划任务

常用选项:

-V:显示版本信息

-l:列出指定列队中等待运行的作业;相当于atq

-d #(atq 查看的编号或者at -l):删除指定的作业;相当于atrm

-c:查看具体作业任务

-f /path/from/somefile
:从指定的文件中读取任务

-m:当任务被完成后,将给用户发送邮件,没有标准输出

注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

time:定义出什么时候进行at这项任务

HH:MM(小时:分钟)

noon , midnight teatime4pm),tomorrow

now+#{minutes,hoursdaysweeks}

执行方式:

1、交互式 2、输入重定向 3at -f 文件

/etc/at.{allow,deny}控制用户是否能执行at任务

白名单:/etc/at.allow 默认不存在,只有改文件中的用户才能执行at命令

黑名单:/etc/at.deny 默认存在,拒绝改文件中的用户执行at命令,而没有在at.deny文件中的使用者则可以执行

at.allow :优先级高,有此文件,deny无效,只有此文件里的用户可以使用at

at.deny:优先级低

如果都没有,普通用户全都拒绝使用at


周期性执行任务 cron计划周期性执行的任务提交给crond,到指定时间会自动运行

相关的你程序包:

cronie:主程序包,提供crond守护进程及相关辅助工具

cronie-anacron:cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

crontabs:包含CentOS提供系统维护服务

系统cron任务:系统维护作业

/etc/crontab

man 5 crontab 查看帮助

用户cron任务:

crontab命令

日志:/var/log/cron

vim /etc/crontab (系统计划任务)

进程与计划任务

每个不同时间之间 空格隔开彼此

时间表示法

1、特定值

给定时间点有效取值范围内的值

2、* 给定时间点上有效取值范围内的所有值,表示…”

3、离散取值: # # #

4、连续取值 : #—#

5、在指定时间范围上,定义步长

/# :#即为步长 例如:在分钟 */2 表示为每2分钟

日期与星期:

* * 10,20 * 0,6 之间的关系是或的关系,即每月的10号,20号,或者周六周日执行,且的关系时,可以用脚本来过滤星期

* * 10,20 * * 此为每月的10号和20

关键字:

@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小时echowall命令

0 */3 * * * root
/bin/echo “howdy”; /usr/bin/wall “welcome to magedu!”

 

注意:运行结果的标准输出和错误以邮件通知各相关用户

1、COMMAND > /dev/null ;2、COMMAND
&> /dev/null(
或者 > /dev/null 2>&1)

对于cron任务来说,%有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义

系统的计划任务:

/etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 脚本

/etc/cron.daily/ 脚本

/etc/cron.weekly/ 脚本

/etc/cron.monthly/ 脚本

普通用户的计划命令存放位置:

/var/spool/cron/

 

anacron系统:

/etc/anacrontab 配置文件,负责执行/etc/cron.daily /etc/cron.weekly/
/etc/cron.monthly
中的系统任务

字段1、如果在这些日子里没有运行这些任务…..

字段2、在重新引导后等待这么多分钟后运行它

字段3、任务识别器,在日志文件中识别

字段4、要执行的任务

/etc/cron.hourly/0anacron执行

当执行任务时,更新/var/spool/anacron/cron.daily文件的时间戳

管理临时文件:

CentOS6 使用/etc/cron.daily/tmpwatch 定时清除临时文件

CentOS7 使用systemd-tmpfiles-setuo服务实现

配置文件:

/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

crontab 命令定义,每个用户都有专用的cron任务文件:

/var/spool/cron/USERNAME

crontab 命令;

-l :列出所有任务;

-r:移除所有任务

-i:同-r一同使用,以交互式模式移除指定任务

-u user : 仅root用户可运行,指定用户管理cron任务

创建、编辑计划任务 : crontab -e -u wang wang用户的身份执行,不谢就以自身执行)

不用写用户,直接写时间和命令

e EDITOR 默认使用vi 可以用export EDITOR=vim 则编辑的时候为vim编辑器

vipw 相当于 vi /etc/passwd

控制用户执行计划任务:

/etc/cron.{allow,deny}
之前已经设置的某用户的任务,将用户放在deny中,该任务依旧执行

若是不小心删除,恢复 可在 /etc/log/cron的日志中查看 执行的命令

任务执行实现秒级:

* * * * * for min
in 0 1 2 ; do echo “hi” ; sleep 20 ; done 实现每20s执行一次

sleep命令:

sleep # s/m/h/d (秒/分钟/小时/天)
默认为s

 

cat sysstat 系统自定义的生成的日志

 

 

 

原创文章,作者:Immortals、zcy,如若转载,请注明出处:http://www.178linux.com/75574

(0)
上一篇 2017-05-14 20:10
下一篇 2017-05-14 20:53

相关推荐

  • 网络配置详解(一)

    Linux网络属性配置      ifcfg命令家族:ifconfig, route, netstat      ifconfig命令:      ifconfig [INTERFACE]      # ifconfig -a 显示所有接口…

    Linux干货 2017-01-02
  • WORD文档格式要求与linux学习规划

    WORD文档格式要求 一、封面               1、活动名称(隶书,小初号字,加粗)               2、主办单位、策划日期(宋体、3号字) 二、目录    &nbs…

    Linux干货 2016-12-12
  • Linux基础——文件管理

    Linux基础——文件管理 文件管理及常用命令详解       Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令:  目录相关操作:cd、pwd、mkdir、rmdir 目录及文件检索:ls 复制、移动、删除:cp、mv、rm…

    Linux干货 2016-09-27
  • CentOS7常用网络管理命令总结

    一、CentOS7网络接口命名策略(systemd)二、CentOS7的基础网络管理命令2.1 NetworkManager服务2.2 nmtui文本交互式工具2.3 nmcli命令行接口工具nmcli的语法说明NetworkManager整体状态显示显示所有连接或仅活动的连接显示所有设备的状态显示指定设备的所有连接属性添加动态的以太网连接(DHCP)添加静…

    Linux干货 2016-06-09
  • linux的发展史

    一、今天要介绍的Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 但是很多时候我们了解到的技术都不是…

    Linux干货 2016-10-17
  • 软件包管理

    软件包的分类,主要有以下两大类    源码包    二进制包(rpm包,系统默认包) rpm包由Redhat公司提出,被众多linux发行版所采用。 优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。 查询已安装的rpm软件信息: 格式:     rpm…

    Linux干货 2016-08-25