linux管理进程和计划任务,Linux进程和计划任务管理

本章结构

#查看进程

#控制进程

#at一次性任务设置

#crontab周期性任务设置

程序和进程的关系

#程序

保存在硬盘、光盘等介质中的可执行代码和数据

静态保存的代码

#进程

在cpu及内存中运行的程序代码

动态执行的代码

父、子进程:每个进程可以创建一个或多个进程

查看进程ps

#ps命令

查看静态的进程统计信息

08cba6480c2d9a079baffbbc92d11ffd.png

#PS命令—查看静态的进程统计信息

ps命令是Linux系统中最为常用的进程查看工具,主要用于显示高喊挡圈运行的各个进程完整信息的静态快照

a:显示当前终端下所有进程信息,包含其他用户进程,与“x”选项结合时显示系统中所有进程信息

u:使用以用户为主的格式输出进程信息

x:显示当前用户在所有终端下的进程信息

-e:显示系统内的所有进程信息

-l:使用长格式显示进程信息

-f:使用完整的格式显示进程信息

68a12bc8c3a0beca2fd89e06e4b5e982.png

5cd8e570d452025f0e42cd6622718723.png

USER:启动该进程的用户账号名称

PID:该进程在系统中的数字ID,在当前系统中是唯一的

TTY:标名该进程在那个==哪个终端上运行,“?”表示不需要终端

STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵尸)、 START:启动该进程的时间

TIME:该进程占用的时间

查看进程信息TOP

#top命令

查看动态的进程排名信息

(还有防止掉线的功能)

f8fd46c7fe7f9f29e7cd947a75742c64.png

查看进程信息pgrep

#pgrep命令

根据特定条件查询今晨PID信息

94dec98f406ce9988a8640ace2c24ffd.png

查看进程信息pstree

#pstree命令

以树形结构列出进程信息

9284e1a0dd3afdcba9228549f8c814c9.png

###yum -y install psmisc 安装pstree命令

pstree -aup

-a:显示完整信息

-u:列出对应用户名

-p:列出对应PID号

进程的前后台调度

#Cril+Z组合键

将当前进程挂起,即调入后台并停止执行

#jobs命令

查看处于后台的任务列表

#fg命令 (fg 1)

将后台进程恢复到前台运行,可指定任务序号

终止进程的运行

#Ctri+C组合键

终端正在执行的命令

#kill、killall命令

kill用于终止指定PID号的进程

killall用于终止指定名称的所有进程

-9选项用于强制终止

终止进程的运行

#pkill命令

根据特定条件终止相应的进程

常用命令选项

-U:根据进程所属的用户名终止相应进程

-t:根据进程所在的终端终止相应进程

fb2fd0ef7341d8703e363e7c5aa45242.png

计划任务管理

#at命令

一次性计划任务

7648c70b0f0278f35f5f91b13d5af868.png

例如:在当天的21:30时自动关闭当前系统

9b3be2d7e412e8dc98077744afc999a3.png

计划任务管理crontab

#crontab命令

按照预先设置的时间周期(分钟、小时、天····)重复执行用户指定的命令操作

属于周期性计划任务

主要设置文件

全局配置文件,位于文件:/etc/crontab

系统默认的设置,位于目录:/etc/cron.*/

用户定义的设置,位于文件:/var/spool/cron/用户名

计划任务管理crontab

#管理crontab计划任务

编辑计划任务:crontab -e 【-u 用户名】

查看计划任务:crontab - l 【-u 用户名】

删除计划任务:crontab -r 【-u 用户名】

crontab任务配置的格式

3b59aedd37b07b34e812a8409d629b19.png

#时间数值的特殊表示方法

表示该范围内的任意时间

,表示间隔的多个不连续时间点

表示一个连续的时间范围

/ 指定间隔的时间频率

举例

0 17 * * 1-5 周一到周五每天17:00

30 8 * * 1,3,5 每周一、三、五的8点30分

0 8-18/2 * * * 8点到18点之间每2小时

0 * */3 * * 每三天

###常用的Crontab命令:

安装crontab:yum install crontabs

查看定时任务列表:crontab -l

编辑定时任务:crontab –e【等同于: vim /var/spool/cron/root】

删除定时任务:crontab –r

备份定时任务:crontab -l > $HOME/backMyCrontab

crontab服务操作说明:

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置

service crond status//查看crontab服务状态

实例:

每隔2分钟输出当前时间到文件

*/2 * * * * echo $(date) >> /test/date.log

在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup

0 6-12/3 * 12 * /usr/bin/backup

每天3-5,17-20每隔30分钟同步一次互联网时间,并且不输出日志到crontab将结果输出到log

echo “*/30 [3-5],[17-20] * * * /usr/bin/ntpstat time.windows.com >/dev/null 2>&1” >> /var/cron.log

每隔两天的上午8点到11点的第3和第15分钟执行command

3,15 8-11 */2 * * command

每个星期一的上午8点到11点的第3和第15分钟执行command

3,15 8-11 * * 1 command

每周六、周日的1:10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

00 03 * * 1-5 find /home “*.xxx” -mtime +4 -exec rm {} ;

每小时执行/etc/cron.hourly目录内的脚本

01 * * * * root run-parts /etc/cron.hourly

Crontab使用小结:

1.环境变量问题,例如crontab不能识别Java的环境变量

crontab执行shell时,只能识别为数不多的环境变量,普通的环境变量是无法识别的,所以在编写shell时,最好使用export重新声明变量,确保脚本执行。

2.命令的执行最好用脚本

3.脚本权限加/bin/sh,规范路径/server/scripts

4.时间变量用反斜线转义,最好用脚本

5.定时任务添加注释

6.>/dev/null 2>&1 ==>&>/dev/null,别随意打印日志文件

7.定时任务里面的程序脚本尽量用全路径

8.避免不必要的程序以及命令输出

9.定时任务之前添加注释

10.打包到文件目录的上一级

知识拓展:

查看crontab的日志记录:

linux

看 /var/log/cron.log这个文件就可以,可以用tail -f /var/log/cron.log观察。

或者是 less /var/log/cron 输入G(大写),直接到末尾查看最新的日志信息。

mail任务

在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=""

HOME=/

第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

/etc/cron.deny 该文件中所列用户不允许使用crontab命令

/etc/cron.allow 该文件中所列用户允许使用crontab命令

/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

使用注意事项:

注意环境变量问题

有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

在 crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程 序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这 样,系统执行任务调度时就没有问题了。

不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

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 &

3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

注意清理系统用户的邮件日志(命令:rm -f /val/mail/root )

每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

例如,可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么 做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc /crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个 定时重启系统的任务也是无效的。

其他注意事项

新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ stack

stack 是容器适配器的一种。要使用 stack,必须包含头文件 。 stack就是“栈”。栈是一种后进先出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不…

C++ queue和priority_queue

queue 和 priority_queue 都是容器适配器,要使用它们,必须包含头文件 。 queue queue 就是“队列”。队列是先进先出的,和排队类似。队头的访问和删除操作只能在队头进行,添加操作只能在队尾进行。不能访问队列中间的元素。 qu…

less linux命令,less 命令用法详解

less 在 Linux 中用来查看文件,它可以以分页的方式显示文件内容。目前和tail 是用来查看文件的常用命令命令格式less [参数] 文件1、使用示例less a.txt用来查看文件按f 或 space 向下翻一页按b向前翻一页其实很好记f即forward 向前b即backward 向后关键最强大的一点…

STL算法分类

STL 中,算法就是函数模板。STL 中的算法大多数是用来对容器进行操作的,如排序、 查找等。大部分算法都是在头文件 中定义的,还有些算法用于数值处理,定义在头文件 中。 STL 中的算法的分类方法。 1 . 不变序列算法。 2 . 变值算法…

linux系统时间代表,Linux上有两种时间,一种是硬件时间,一种是系统时间

date 系统时间clock/hwclock 硬件时钟cal 日历date打印或设置系统日期或时间,以给定格式显示或设置系统时间%a显示周%A 完整显示周%b显示月份%B 完整显示月%c e.g.,Thu Mar 3 23:05:25 2005%C 显示世纪%d显示几日%D …

linux下软件包清理,Linux运维知识:如何清理Linux系统中的孤立、无用的软件包

本文主要向大家介绍了Linux运维知识的如何清理Linux系统中的孤立、无用的软件包,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助。在Linux下安装软件,通常会自动安装一些依赖包或库。在你卸载某个软件后,这个软…

linux 多个定时器,timer: 一个Linux下的超级精简的多重定时器:可实现成千上万个定时任务,定时精度可达纳秒级别,且同一时间点可添加不同的任务!适用于云后台服务和嵌入式等各种环境。...

MT_Timer(MT译为Multiple或Multi)一、介绍一个Linux下的超级简洁的定时器:利用epoll机制和timerfd新特性实现的多重、多用、多个定时任务实现。只需要使用TIMER_CREATE()接口创建一个定时器实体,即可向其添加成千上万个定时任务,定时任务可达…

C++ bitset类

bitset 模板类由若干个位&#xff08;bit&#xff09;组成&#xff0c;它提供一些成员函数&#xff0c;使程序员不必通过位运算就能很方便地访问、修改其中的任意一位。bitset 模板类在头文件 中定义如下&#xff1a; template <size_t N> class bitset {... };size_t 可…

red flag linux指定域名,Red Flag Server 4.1 系统管理手册(适用桌面linux4.1) 6

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼第3章 文件系统管理 (三)--------------------------------------------------------------------------------3.6 LVM逻辑卷管理LVM 是 Logical Volume Manager 的简写&#xff0c;它为计算机提供了更高层次的磁盘存储解决方案&am…

什么是计算机文件

内存中存放的数据在计算机关机后就会消失。要长久保存数据&#xff0c;就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索&#xff0c;引入了“文件”的概念。 一篇文章、一段视频、一个可执行程序&#xff0c;都可以被保存为一个文件&#xff0c;并赋予一个文件名。…

linux下阻塞的系统调用,Linux下文件的阻塞与非阻塞对部分系统调用的影响

1.基本概念所谓的阻塞&#xff0c;即内核在对文件操作I/O系统调用时&#xff0c;如果条件不满足(可能需要产生I/O)&#xff0c;则内核会将该进程挂起。非阻塞则是发现条件不满足就会立即返回。此外需要注意的是非阻塞并不是轮询&#xff0c;不然就和阻塞没多大区别了&#xff0…

C++文件类

C 标准类库中有三个类可以用于文件操作&#xff0c;它们统称为文件流类。这三个类是&#xff1a; ifstream&#xff1a;用于从文件中读取数据。ofstream&#xff1a;用于向文件中写人数据。fstream&#xff1a;既可用于从文件中读取数据&#xff0c;又可用于 向文件中写人数据。…

window10内核Linux,windows 10中发布完整的Linux内核

5月8日消息&#xff1a; 近年来&#xff0c;微软对Linux开发者社区的支持令许多人感到惊讶&#xff0c;包括将诸如Bash shell之类的东西引入到Windows&#xff0c;或者在Windows 10中支持原生OpenSSH&#xff0c;甚至包括Windows应用商店上架了Ubuntu、SUSE Linux和Fedora。现在…

C++ open 打开文件

在对文件进行读写操作之前&#xff0c;先要打开文件。打开文件有以下两个目的&#xff1a; 1 . 通过指定文件名&#xff0c;建立起文件和文件流对象的关联&#xff0c;以后要对文件进行操作时&#xff0c;就可以通过与之关联的流对象来进行。 2 . 指明文件的使用方式。使用方…

c语言窗口炸弹代码,C语言实现数字炸弹小游戏

本文实例为大家分享了C语言实现数字炸弹小游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下使用的是C语言# 内容#include#includeint main(){//变量char c_TheRequest 1;//开始界面的字符int in_Deltar 1,in_EnteredNumber,in_Sig;//游戏中输入数字及其判定所需…

C++ 文本文件的读取和写入

使用文件流对象打开文件后&#xff0c;文件就成为一个输入流或输出流。对于文本文件&#xff0c;可以使用 cin、cout 读写。 流的成员函数和流操纵算子同样适用于文件流&#xff0c;因为 ifstream 是 istream 的派生类&#xff0c;ofstream 是 ostream 的派生类&#xff0c;fs…

C++ 移动和获取文件读写指针

在读写文件时&#xff0c;有时希望直接跳到文件中的某处开始读写&#xff0c;这就需要先将文件的读写指针指向该处&#xff0c;然后再进行读写。 ifstream 类和 fstream 类有 seekg 成员函数&#xff0c;可以设置文件读指针的位置&#xff1b;ofstream 类和 fstream 类有 seekp…

程序设计基础——c语言篇,C语言程序设计基础篇.ppt

C语言程序设计基础篇C 语言程序设计—基础篇 第 2 章 数据类型和输入输出 2.1 数据类型 著名计算机科学家沃思提出&#xff1a; 程序&#xff1d;数据结构&#xff0b;算法 例如&#xff1a;学生各科成绩及总分排队问题。 成绩存放 –– 数据结构 排队方法 –– 算法 在此, 存放…

文件的文本打开方式和二进制打开方式的区别

在 UNIX/Linux 平台中&#xff0c;用文本方式或二进制方式打开文件没有任何区别。 在 UNIX/Linux 平台中&#xff0c;文本文件以\n&#xff08;ASCII 码为 0x0a&#xff09;作为换行符号&#xff1b;而在 Windows 平台中&#xff0c;文本文件以连在一起的\r\n&#xff08;\r的…

c语言scanf函数隐藏的缓冲区,零基础学C语言 笔记四 Scanf函数清除缓冲区

Scanf函数清除缓冲区之前涉及到scanf会先到缓冲区看看是否存在数据&#xff0c;若存在数据&#xff0c;就直接拿缓冲区的数据过来使用&#xff0c;这就涉及到了一个问题&#xff0c;那如果缓冲区的数据不是我想要的呢&#xff1f;方法一&#xff1a;我们用scanf吸收掉我们的代码…