Linux进程和任务管理
Posted 小刀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程和任务管理相关的知识,希望对你有一定的参考价值。
process 进程
进程-线程等
Job
前台--后台:
后台任务"与"前台任务"的本质区别只有一个:是否继承标准输入
联机--脱机 -以及crontab
脱机管理主要是针对终端异常断开的情形。 脱机工作:离线后台运行
通常使用nohup命令来使得脱机或注销之后,Job依旧可以继续运行。也就是说nohup忽略所有挂断(SIGHUP)信号
00. 无论是前台作业还是后台作业,两者都来自当前的shell,是当前shell的子程序。
下面是两者的定义。
前台作业:可以由用户参与交互及控制的作业我们称之为前台作业。
后台作业:在内存可以自运行的作业,用户无法参与交互以及使用[ctrl]+c来终止,只能通过bg或fg来调用该作业。
a、 command & 直接让作业进入后台运行
b、 [ctrl]+z 将当前作业切换到后台
c、 jobs 查看后台作业状态
d、 fg %n 让后台运行的作业n切换到前台来
d、 bg %n 让指定的作业n在后台运行
e、 kill %n 移除指定的作业n
"n" 为jobs命令查看到的job编号,不是进程id。
每一个job会有一个对应的job编号,编号在当前的终端从1开始分配。
01. crontab命令被用来提交和管理用户的需要周期性执行的任务。crond的概念和crontab是不可分割的。crontab是一个命令,
常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。
Linux下的任务调度分为两类:系统任务调度和用户任务调度
在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
所有用户定义的crontab文件都被保存在/var/spool/cron目录中
02.crontab文件
crontab支持两种状态:
a.直接编写计划任务;
b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定
第一步:写cron脚本文件,命名为crontest.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
第二步:添加定时任务。
执行命令 “crontab crontest.cron”
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
解释:
* * * * * /bin/sh /scripts/yy.sh
分 时 日 月 周 命令和文件路径
(00-59) (0-23) (1-31) (1-12) (0-6)
所用符号表示意思
* 星号每的意思
- 减号连续一段时间,如:00 17-19 * * * cmd 每天下午17点,18点,19点执行一次命令
, 逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令
/n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令
注意事项:
创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,
这种情况一般是由于在crontab文件中没有配置环境变量引起的。在 crontab文件中定义多个调度任务时,
需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程 序当然能找到环境变量,
而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这 样,系统执行任务调度时就没有问题了。
不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,
除了一些自动设置的全局变量。所以注意如下:
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 &
新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行
仅仅执行一次 at 守护进程 atd
用户准备退出 session
系统向该 session 发出SIGHUP信号
session 将SIGHUP信号发给所有子进程
子进程收到SIGHUP信号后,自动退出
上面的流程解释了,为什么"前台任务"会随着 session 的退出而退出:因为它收到了SIGHUP信号。
那么,"后台任务"是否也会收到SIGHUP信号?
这由 Shell 的huponexit参数决定的。
$ shopt | grep huponexit
执行上面的命令,就会看到huponexit参数的值 大多数Linux系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把SIGHUP信号发给"后台任务"
守护进程
daemon 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务
一般在命名后面会加一个d,表示守护进程
1.service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,
它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
centos
启动某个独立的守护程序服务的方式
2.etc/init.d/syslog start
建议大家将service命令
替换为/etc/init.d/mysqld stop(因为有一些linux的版本不支持service)
进程
1.进程分类
01.守护进程
前台进程
后台进程
02.父进程
子进程
03.系统进程
用户进程
2.进程状态
基本状态
就绪状态
运行状态
阻塞状态
转换过程
就绪状态---> 运行状态-
运行状态---->阻塞状态
运行状态--->就绪状态
阻塞状态---> 就绪状态 <唤醒>
3.进程的查看
ps
pstree
top
4.进程的组成
程序
数据
进程控制块(PCB)
包含<标志信息、说明信息、现场信息、管理信息>
结构: 线性 索引 链式
5.进程控制
相关内容 :
作业控制