进程 - 线程等
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. 进程控制
相关内容 :
作业控制
来源: http://www.bubuko.com/infodetail-2923544.html