当前位置: 首页 > news >正文

那种网站建设软件最好游戏开发救世主

那种网站建设软件最好,游戏开发救世主,需要手机端网站建设的企业,漳州台商投资区建设局网站第十二章 Linux系统管理#xff08;进程管理、工作管理和系统定时任务#xff09;#xff08;三#xff09; 十九、Linux 定时执行任务#xff08;at命令#xff09; Linux at命令详解#xff1a;定时执行任务 要想使用 at 命令#xff0c;读者需提前安装好 at 软件…第十二章 Linux系统管理进程管理、工作管理和系统定时任务三 十九、Linux 定时执行任务at命令 Linux at命令详解定时执行任务 要想使用 at 命令读者需提前安装好 at 软件包并开启 atd 服务。因此首先来看看如何安装 at 软件包。 在 Linux 系统中查看 at 软件包是否已安装可以使用 rpm -q 命令如下所示 [rootlocalhost ~]# rpm -q at at-3.1.13-20.el7x86_64 可以看到当前系统已经安装 at 软件包若读者所用系统未安装可使用如下命令进行安装 [rootlocalhost ~]# yum -y install at #省略输出信息最终出现 Complete!证明安装成功。 除此之外at 命令要想正确执行还需要 atd 服务的支持。atd 服务是独立的服务启动的命令如下 [rootlocalhost ~]# service atd start 正在启动 atd [确定] 如果想让 atd 服务开机时自启动则可以使用如下命令 [rootlocalhost ~]# chkconfig atd on 当然独立服务的自启动也可以修改 /etc/rc.local 配置文件具体怎么做看个人习惯。 安装好 at 软件包并开启 atd 服务之后at 命令才可以正常使用不过在此之前我们还要学习一下 at 命令的访问控制。 访问控制指的是允许哪些用户使用 at 命令设定定时任务或者不允许哪些用户使用 at 命令。大家可以将其想象成设定黑名单或白名单这样更容易理解。 at 命令的访问控制是依靠 /etc/at.allow白名单和 /etc/at.deny黑名单这两个文件来实现的具体规则如下 如果系统中有 /etc/at.allow 文件那么只有写入 /etc/at.allow 文件白名单中的用户可以使用 at 命令其他用户不能使用 at 命令注意/etc/at.allow 文件的优先级更高也就是说如果同一个用户既写入 /etc/at.allow 文件又写入 /etc/at.deny 文件那么这个用户是可以使用 at 命令的。如果系统中没有 /etc/at.allow 文件只有 /etc/at.deny 文件那么写入 /etc/at.deny 文件黑名单中的用户不能使用 at 命令其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。如果系统中这两个文件都不存在那么只有 root 用户可以使用 at 命令。 系统中默认只有 /etc/at.deny 文件而且这个文件是空的因此系统中所有的用户都可以使用 at 命令。不过如果我们打算控制用户的 at 命令权限那么只需把用户写入 /etc/at.deny 文件即可。 对于 /etc/at.allow 和 /etc/at.deny 文件的优先级我们做一个实验来验证一下命令如下 [rootlocalhost ~]# ls -l /etc/at* -rw-r--r--.1 root root 1 1月 30 2012 /etc/at.deny #系统中默认只有at.deny文件 [rootlocalhost ~]# echo user1 /etc/at.deny [rootlocalhost ~]# cat /etc/at.deny user1 #把user1用户写入/etc/at.deny文件 [rootlocalhost ~]# su - user1 [user1localhost ~]$ at 0200 You do not have permission to use at. #没有权限使用at命令切换成user1用户这个用户已经不能执行at命令了 [user1localhost ~]$ exit logout #返回root身份 [rootlocalhost ~]# echo user1 /etc/at.allow [rootlocalhost ~]# cat /etc/at.allow user1 #建立/etc/at.allow文件并在文件中写入user1用户 [rootlocalhost ~]# su - user1 [user1localhost ~]$ at 0200 at #切换成user1用户user1用户可以执行at命令。这时user1用户既在/etc/at.deny文件中又在/etc/at.allow文件中但是/etc/at.allow文件的优先级更高 [user1localhost ~]$ exit logout #返回root身份 [rootlocalhost ~]# at 0200 at #root用户虽然不在/etc/at.allow文件中但是也能执行at命令 #root用户虽然不在/etc/at.allow文件中但是也能执行at命令 #说明root用户不受这两个文件的控制 这个实验说明了 /etc/at.allow 文件的优先级更高如果 /etc/at.allow 文件存在则 /etc/at.deny 文件失效。/etc/at.allow 文件的管理更加严格因为只有写入这个文件的用户才能使用 at 命令如果需要禁用 at 命令的用户较多则可以把少数用户写入这个文件。/etc/at.deny 文件的管理较为松散如果允许使用 at 命令的用户较多则可以把禁用的用户写入这个文件。不过这两个文件都不能对 root 用户生效。 接下来正式介绍 at 命令。at 命令的格式非常简单基本格式如下 [rootlocalhost ~] # at [选项] [时间] 有关此命令常用的几个选项及各自含义如表 1 所示。 表 1 at 命令选项及含义 选项含义-m当 at 工作完成后无论命令是否输出都用 E-mail 通知执行 at 命令的用户。-c 工作标识号显示该 at 工作的实际内容。-t 时间在指定时间提交工作并执行时间格式为 [[CC]YY]MMDDhhmm。-d删除某个工作需要提供相应的工作标识号ID同 atrm 命令的作用相同。-l列出当前所有等待运行的工作和 atq 命令具有相同的额作用。-f 脚本文件指定所要提交的脚本文件。 另外表 2 罗列了此命令中关于时间参数可用的以下格式。 表 2 at 命令时间参数可用格式 格式用法HH:MM比如 04:00 AM。如果时间已过则它会在第二天的同一时间执行。Midnightmidnight代表 12:00 AM也就是 00:00。Noonnoon代表 12:00 PM相当于 12:00。Teatimeteatime代表 4:00 PM相当于 16:00。英文月名 日期 年份比如 January 15 2018 表示 2018 年 1 月 15 号年份可有可无。MMDDYY、MM/DD/YY、MM.DD.YY比如 011518 表示 2018 年 1 月 15 号。now时间以 minutes、hours、days 或 weeks 为单位例如 now5 days 表示命令在 5 天之后的此时此刻执行。 at 命令只要指定正确的时间就可以输入需要在指定时间执行的命令。这个命令可以是系统命令也可以是 Shell 脚本。举几个例子。 【例 1】 [cootlocalhost ~]# cat /root/hello.sh #!/bin/bash echo hello world!! #该脚本会打印hello world!! [rootlocalhost ~]# at now 2 minutes at /root/hello.sh /root/hello.log #执行hello.sh脚本并把输出写入/root/hello.log文件 at EOT #使用CtrlD快捷键保存at任务 job 8 at 2013-07-25 20:54 #这是第8个at任务,会在2013年7月25日20:54执行 [rootlocalhost ~]# at -c 8 #查询第8个at任务的内容 ...省略部分内容... #主要定义系统的环境变量 /root/hello.sh /root/hello.log #可以看到at执行的任务 【例 2】 [rootlocalhost ~J# at 02:00 2013-07-26 at /bin/sync at /sbin/shutdown -h now at EOT job 9 at 2013-07-26 02:00 #在指定的时间关机。在一个at任务中是可以执行多个系统命令的 在使用系统定时任务时不论执行的是系统命令还是 Shell 脚本最好使用绝对路径来写命令这样不容易报错。at 任务一旦使用 CtrlD 快捷键保存实际上写入了 /var/spool/at/ 这个目录这个目录内的文件可以直接被 atd 服务调用和执行。 表 1 中提到了 atq 命令和 atrm 命令。atq 命令用于查看当前等待运行的工作atrm 命令后者用于删除指定的工作它们的使用方法也很简单这里给大家举几个简单的例子。 【例 3】atq 命令的用法。 [rootlocalhost ~]# atq 9 2013-07-26 0200 a root #说明root用户有一个at任务在2013年7月26日0200执行工作号是9 [rootlocalhost ~]# atrm [工作号] #删除指定的at任务 【例 4】atrm 命令的用法。 [rootlocalhost ~]# atrm 9 [rootlocalhost ~]# atq #删除9号at任务再查询就没有at任务存在了 二十、Linux crontab命令循环执行定时任务详解版 Linux 循环执行定时任务crontab命令 前面学习了 at 命令此命令在指定的时间仅能执行一次任务但在实际工作中系统的定时任务一般是需要重复执行的。而 at 命令显然无法满足需求这是就需要使用 crontab 命令来执行循环定时任务。 在介绍 crontab 命令之前我们首先要介绍一下 crond因为 crontab 命令需要 crond 服务支持。crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程和 Windows 中的计划任务有些类似。 crond 服务的启动和自启动方法如下 [rootlocalhost ~]# service crond restart 停止 crond [确定] 正在启动 crond [确定] #重新启动crond服务 [rootlocalhost ~]# chkconfig crond on #设定crond服务为开机自启动 其实在安装完成操作系统后默认会安装 crond 服务工具且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务如果有则会自动执行该任务。 接下来在介绍 crontab 命令。该命令和 at 命令类似也是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。而且原则也非常相似 当系统中有 /etc/cron.allow 文件时只有写入此文件的用户可以使用 crontab 命令没有写入的用户不能使用 crontab 命令。同样如果有此文件/etc/cron.deny 文件会被忽略因为 /etc/cron.allow 文件的优先级更高。当系统中只有 /etc/cron.deny 文件时写入此文件的用户不能使用 crontab 命令没有写入文件的用户可以使用 crontab 命令。这个规则基本和 at 命令的规则一致同样是 /etc/cron.allow 文件比 /etc/cron.deny 文件的优先级高Linux 系统中默认只有 /etc/cron.deny 文件。 每个用户都可以实现自己的 crontab 定时任务只需使用这个用户身份执行“crontab -e”命令即可。当然这个用户不能写入 /etc/cron.deny 文件。 crontab 命令的基本格式如下 [rootlocalhost ~]# crontab [选项] [file] 注意这里的 file 指的是命令文件的名字表示将 file 作为 crontab 的任务列表文件并载入 crontab若在命令行中未指定文件名则此命令将接受标准输入键盘上键入的命令并将它们键入 crontab。 与此同时表 1 罗列出了此命令常用的选项及功能。 表 1 crontab 命令常用选项及功能 选项功能-u user用来设定某个用户的 crontab 服务例如 -u demo 表示设备 demo 用户的 crontab 服务此选项一般有 root 用户来运行。-e编辑某个用户的 crontab 文件内容。如果不指定用户则表示编辑当前用户的 crontab 文件。-l显示某用户的 crontab 文件内容如果不指定用户则表示显示当前用户的 crontab 文件内容。-r 从 /var/spool/cron 删除某用户的 crontab 文件如果不指定用户则默认删除当前用户的 crontab 文件。 -i在删除用户的 crontab 文件时给确认提示。 其实 crontab 定时任务非常简单只需执行“crontab -e”命令然后输入想要定时执行的任务即可。不过当我们执行“crontab -e”命令时打开的是一个空文件而且操作方法和 Vim 是一致的。那么这个文件的格式才是我们真正需要学习的内容。文件格式如下 [rootlocalhost ]# crontab -e #进入 crontab 编辑界面。会打开Vim编辑你的任务 * * * * * 执行的任务 这个文件中是通过 5 个“*”来确定命令或任务的执行时间的这 5 个“*”的具体含义如表 2 所示。 表 2 crontab 时间表示 项目含义范围第一个*一小时当中的第几分钟minute0~59第二个*一天当中的第几小时hour0~23第三个*一个月当中的第几天day1~31第四个*一年当中的第几个月month1~12第五个*一周当中的星期几week0~70和7都代表星期日 在时间表示中还有一些特殊符号需要学习如表 3 所示。 表 3 时间特殊符号 特殊符号含义*星号代表任何时间。比如第一个*就代表一小时种每分钟都执行一次的意思。,逗号代表不连续的时间。比如0 81216***命令就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。-中杠代表连续的时间范围。比如0 5 ** 1-6命令代表在周一到周六的凌晨 5 点 0 分执行命令。/正斜线代表每隔多久执行一次。比如*/10****命令代表每隔 10 分钟就执行一次命令。 当“crontab -e”编辑完成之后一旦保存退出那么这个定时任务实际就会写入 /var/spool/cron/ 目录中每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效只要 crond 服务是启动的。知道了这 5 个时间字段的含义我们多举几个时间的例子来熟悉一下时间字段如表 4 所示。 表 4 crontab举例 时间含义45 22 ***命令在 22 点 45 分执行命令0 17 ** 1命令在每周一的 17 点 0 分执行命令0 5 115**命令在每月 1 日和 15 日的凌晨 5 点 0 分执行命令40 4 ** 1-5命令在每周一到周五的凌晨 4 点 40 分执行命令*/10 4 ***命令在每天的凌晨 4 点每隔 10 分钟执行一次命令0 0 115 * 1命令在每月 1 日和 15 日每周一个 0 点 0 分都会执行命令注意星期几和几日最好不要同时出现因为它们定义的都是天非常容易让管理员混淆 现在我们已经对这 5 个时间字段非常熟悉了可是在“执行的任务”字段中都可以写什么呢既可以定时执行系统命令也可以定时执行某个 Shell 脚本这里举几个实际的例子。 【例 1】让系统每隔 5 分钟就向 /tmp/test 文件中写入一行“11”验证一下系统定时任务是否会执行。 [rootlocalhost ~]# crontab -e #进入编辑界面 */5 * * * * /bin/echo 11 /tmp/test 这个任务在时间工作中没有任何意义但是可以很简单地验证我们的定时任务是否可以正常执行。如果觉得每隔 5 分钟太长那就换成“*”让它每分钟执行一次。而且和 at 命令一样如果我们定时执行的是系统命令那么最好使用绝对路径。 【例 2】让系统在每周二的凌晨 5 点 05 分重启一次。 [rootlocalhost ~]# crontab -e 5.5 * * 2 /sbin/shutdown -r now 如果服务器的负载压力比较大则建议每周重启一次让系统状态归零。比如绝大多数游戏服务器每周维护一次维护时最主要的工作就是重启让系统状态归零。这时可以让我们的服务器自动来定时执行。 【例 3】在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本 autobak.sh。 [rootlocalhost ~]# crontab -e 30.3 11015 * * /root/sh/autobak.sh 这些定时任务保存之后就可以在指定的时间执行了。我们可以使用命令来查看和删除定时任务命令如下 [rootlocalhost ~]# crontab -l #查看root用户的crontab任务 */5 * * * * /bin/echo 11 /tmp/test 5.5 * * 2 /sbin/shutdown -r now 30.3 11015 * * /root/sh/autobak.sh [rootlocalhost ~]# crontab -r #删除root用户所有的定时任务。如果只想删除某个定时任务则可以执行“crontab -e”命令进入 #编辑模式手工删除 [rootlocalhost ~]# crontab -l no crontab for root #删除后再查询就没有root用户的定时任务了 在书写 crontab 定时任务时需要注意以下几个事项 6 个选项都不能为空必须填写。如果不确定则使用“*”代表任意时间。crontab 定时任务的最小有效时间是分钟最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。在定义时间时日期和星期最好不要在一条定时任务中出现因为它们都以天为单位非常容易让管理员混淆。在定时任务中不管是直接写命令还是在脚本中写命令最好都使用绝对路径。有时使用相对路径的命令会报错。 系统的crontab设置 “crontab -e”是每个用户都可以执行的命令也就是说不同的用户身份可以执行自己的定时任务。但是有些定时任务需要系统执行这时就需要编辑 /etc/crontab 这个配置文件了。 当然并不是说写入 /etc/crontab 配置文件中的定时任务在执行时不需要用户身份而是“crontab -e”命令在定义定时任务时默认用户身份是当前登录用户。而在修改 /etc/crontab 配置文件时定时任务的执行者身份是可以手工指定的。这样定时任务的执行会更加灵活修改起来也更加方便。 那我们打开这个文件看看吧如下 [rootlocalhost ~]# vi /etc/crontab SHELL/bin/bash #标识使用哪种Shell PATH/sbin/bin/usr/sbin/usr/bin #指定PATH环境变量。crontab使用自己的PATH而不使用系统默认的PATH所以在定时任务中出现的 #命令最好使用大写 MAILTOroot #如果有报错输出或命令结果有输出则会向root发送信息 HOME/ #标识主目录 # For details see man 4 crontabs #提示大家可以去“man 4 crontabs”查看帮助 # Example of job definition #.——————————— minute (0 - 59) # |.———————— hour (0 - 23) # | |.——————— day of month (1 - 31) # | | |.———— month (1 - 12) OR janfebmarapr…… # | | | | .———day of week(0-6)(Sunday0 or 7)OR sunmontuewedthufrisat # | | | | | # * * * * * user-name command to be executed #分 时日月周执行者身份命令 #列出文件格式并加入了注释 在 CentOS 6.x 中/etc/crontab 文件也发生了变化。在 CentOS 5.x 中这个文件的内容大概是这样子的 #以下输出在CentOS 5.5中 [rootsc ~]# vi /etc/crontab SHELL/bin/bash PATH/sbin/bin/usr/sbin/usr/bin MAILTOroot HOME/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02.4 * * * root run-parts /etc/cron.daily 22.4 * * 0 root run-parts /etc/cron.weekly 42.4 1 * * root run-parts /etc/cron.monthly 在 CentOS 5.x 中/etc/crontab 文件会使用 run-parts 脚本执行 /etc/cron.{dailyweeklymonthly} 目录中的所有文件。这个 run-parts 其实是一个 Shell 脚本保存在 /usr/bin/run-parts 中它的作用就是把其后面跟随的目录中的所有可执行文件依次执行。也就是说如果我们想让某个脚本在每天都执行一次那么可以不用手工去写定时任务而只需要给这个脚本赋予执行权限并把它放入 /etc/cron.daily/ 目录中这样这个脚本就会在每天的凌晨 4 点 02 分执行了。 但是在 CentOS 6.x 中/etc/crontab 文件中不再有相关的段落那么 run-ptars 这种定时任务的执行方法是否不可用了呢 我们看到 /etc/crontab 中有一句提示让我们“man 4 crontabs”来查看帮助那么我们就看看这个帮助吧在这个帮助中写明了“在旧版本的 crontab 配置文件中通过 run-parts 脚本来调用 cron.{dailyweeklymonthly} 目录定时执行这些目录中的脚本。在当前系统中为了避免 cron 和 anacron 之间产生冲突只要 anacron 已经安装就使用 anacron 来执行这些目录中的脚本。具体可以查看 anacron(8) 的帮助”。对于 anacron 的用法后续章节再详解介绍。 其实对用户来讲并不需要知道这个定时任务到底是由哪个程序调用的。我们需要知道的事情是如何使用系统的 crontab 设置。对此新、老版本的 CentOS 没有区别配置方法都有两种。 第一种方法就是把需要定时执行的工作写成脚本程序并赋予执行权限然后直接把这个脚本复制到 /etc/cron.{dailyweeklymonthly} 目录中的任意一个。比如我需要让某个脚本每周执行就把这个脚本复制到 /etc/cron.weekly/ 目录中。这样这个脚本就会每周执行一次具体的执行时间要参考 anacron 的配置文件。 第二种方法就是修改 /etc/crontab 这个配置文件加入自己的定时任务不过需要注意指定脚本的执行者身份。例如 [rootlocalhost ~]# vi /etc/crontab …省略部分输出… * * * * * root run-parts /root/cron/ #让系统每分钟都执行一次/root/cron/目录中的脚本脚本执行者是root用户 #虽然在CentOS 6.x中不直接通过此配置文件调用/etc/cron.{dailyweeklymonthly}这些目录但是run-parts脚本还是可以使用的。所以我完全可以参照CentOS 5.x的方法来写定时任务 #使用run-parts脚本调用并执行/root/cron/目录中所有的可执行文件 [rootlocalhost ~]# mkdir cron #建立/root/cron/目录 [rootlocalhost cron]# vi /root/cron/hello.sh #/bin/bash echo hello /root/cron/hello.log #在/root/cron/hello.log文件中写入“hello” [rootlocalhost cron]# chmod 755 hello.sh #赋予执行权限 #因为hello.sh脚本放入了/root/cron/目录中所以每分钟执行一次。 只要保存 /etc/crontab 文件这个定时任务就可以执行了。当然要确定 crond 服务是运行的。 这两种方法都是可以使用的具体看个人的习惯。不过要想修改 /etc/crontab 文件必须是 root 用户普通用户不能修改只能使用用户身份的 crontab 命令。 二十一、Linux 检测长期未执行的定时任务anacron命令 Linux anacron命令用法详解 anacron 是用来做什么的呢设想这样一个场景Linux 服务器会在周末关机两天但是设定的定时任务大多在周日早上进行但在这个时间点服务器又处于关机状态导致系统很多定时任务无法运行。 又比如我们需要在凌晨 5 点 05 分执行系统的日志备份但 Linux 服务器不是 24 小时开机的在晚上需要关机白天上班之后才会再次开机在这个定时任务的执行时间我们的服务器刚好没有开机那么这个定时任务就不会执行了。anacron 就是用来解决这个问题的。 anacron 会以 1 天、1周7天、一个月作为检测周期判断是否有定时任务在关机之后没有执行。如果有这样的任务那么 anacron 会在特定的时间重新执行这些定时任务。 那么anacron 是如何判断这些定时任务已经超过执行时间的呢这就需要借助 anacron 读取的时间记录文件。anacron 会分析现在的时间与时间记录文件所记载的上次执行 anacron 的时间将两者进行比较如果两个时间的差值超过 anacron 的指定时间差值一般是 1 天、7 天和一个月就说明有定时任务没有执行这时 anacron 会介入并执行这个漏掉的定时任务从而保证在关机时没有执行的定时任务不会被漏掉。 在 CentOS 6.x 中使用 cronie-anacron 软件包取代了 vixie-cron 软件包。而且在原先 CentOS 版本的 /etc/cron.{dailyweeklymonthly} 目录中的定时任务会同时被 cron 和 anacron 调用这样非常容易出现重复执行同一个定时任务的错误。因此在 CentOS 6.x 中/etc/cron.{dailyweeklymonthly} 目录中的定时任务只会被 anacron 调用从而保证这些定时任务只会在每天、每周或每月定时执行一次而不会重复执行。 不仅如此在 CentOS 6.x 中anacron 还有一个变化那就是 anacron 不再是单独的服务而变成了系统命令。也就是说我们不再使用“service anacron restart”命令来管理 anacron 服务了而需要使用 anacron 命令来管理 anacron 工作。 anacron命令的基本格式如下 [rootlocalhost ~]# anacron [选项] [工作名] 这里的工作名指的是依据 /etc/anacrontab 文件中定义的工作名。表 1 罗列出了此命令常用的几个选项及各自的功能。 表 1 anacron命令常用选项及功能 选项功能-f强制执行相关工作忽略时间戳。-u更新 /var/spool/anacron/cron.{dailyweeklymonthly} 文件中的时间戳为当前日期但不执行任何工作。-s依据 /etc/anacrontab 文件中设定的延迟时间顺序执行工作在前一个工作未完成前不会开始下一个工作。-n立即执行 /etc/anacrontab 中所有的工作忽略所有的延迟时间。-q禁止将信息输出到标准错误常和 -d 选项合用。 在当前的 Linux 中其实不需要执行任何 anacron 命令只需要配置好 /etc/anacrontab 文件系统就会依赖这个文件中的设定来通过 anacron 执行定时任务了。那么关键就是 /etc/anacrontab 文件的内容了。这个文件的内容如下 [rootlocalhost ~]# vi /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL/bin/sh PATH/sbin:/bin:/usr/sbin:/usr/bin MAILTOroot #前面的内容和/etc/crontab类似 #the maximal random delay added to the base delay of the jobs RANDOM_DELAY45 #最大随机廷迟 #the jobs will be started during the following hours only START_H0URS_RANGE3-22 #fanacron的执行时间范围是3:00~22:00 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily #每天开机 5 分钟后就检查 /etc/cron.daily 目录内的文件是否被执行如果今天没有被执行那就执行 7 25 cron.weekly nice run-parts /etc/cron.weekly #每隔 7 天开机后 25 分钟检查 /etc/cron.weekly 目录内的文件是否被执行如果一周内没有被执行就会执行 ©monthly 45 cron.monthly nice run-parts /etc/cron.monthly #每隔一个月开机后 45 分钟检查 /etc/cron.monthly 目录内的文件是否被执行如果一个月内没有被执行那就执行  在这个文件中“RANDOM_DELAY”定义的是最大随机延迟也就是说cron.daily 工作如果超过 1 天没有执行则并不会马上执行而是先延迟强制延迟时间再延迟随机延迟时间之后再执行命令“START_HOURS_RANGE”的是定义 anacron 执行时间范围anacron 只会在这个时间范围内执行。 我们用 cron.daily 工作来说明一下 /etc/anacrontab 的执行过程: 读取 /var/spool/anacron/cron.daily 文件中 anacron 上一次执行的时间。和当前时间比较如果两个时间的差值超过 1 天就执行 cron.daily 工作。只能在 0300-2200 执行这个工作。执行工作时强制延迟时间为 5 分钟再随机延迟 045 分钟。使用 nice 命令指定默认优先级使用 run-parts 脚本执行 /etc/cron.daily 目录中所有的可执行文件。 大家会发现/etc/cron.{dailyweeklymonthly} 目录中的脚本在当前的 Linux 中是被 anacron 调用的不再依靠 cron 服务。不过anacron 不用设置多余的配置我们只需要把需要定时执行的脚本放入 /etc/cron.{dailyweeklymonthly} 目录中就会每天、每周或每月执行而且也不再需要启动 anacron 服务了。如果需要进行修改则只需修改 /etc/anacrontab 配置文件即可。 比如我更加习惯让定时任务在凌晨 0300-0500 执行就可以进行如下修改 [rootlocalhost ~] # vi /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL-/bin/sh PATH-/sbin:/bin:/usr/sbin:/usr/bin MAILTO-root # the maximal random delay added to the base delay of the jobs RANDOM_DELAY0 #把最大随机廷迟改为0分钟,不再随机廷迟 # the jobs will be started during the following hours only START_HOORS_RANGE3-5 #执行时间范围为03:00—05:00 #period in days delay in minutes job-identifier command 1 0 cron.daily nice run-parts /etc/cron.daily 7 0 cron.weekly nice run-parts /etc/cron.weekly monthly 0 cron.monthly nice run-parts /etc/cron.monthly #把强制延迟也改为0分钟,不再强制廷迟 这样所有放入 /etc/cron.{dailyweeklymonthly} 目录中的脚本都会在指定时间执行而且也不怕服务器万一关机的情况了。 二十二、Linux 查看系统资源的使用情况vmstat命令 Linux vmstat命令详解监控系统资源 如果你想动态的了解一下系统资源的使用状况以及查看当前系统中到底是哪个环节最占用系统资源就可以使用 vmstat 命令。 vmstat命令是 Virtual Meomory Statistics虚拟内存统计的缩写可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。此命令的基本格式有如下 2 种 [rootlocalhost ~]# vmstat [-a] [刷新延时 刷新次数] [rootlocalhost ~]# vmstat [选项]  -a 的含义是用 inact/active活跃与否 来取代 buff/cache 的内存输出信息。除此之外表 1 罗列出了 vmstat 命令的第二种基本格式中常用的选项及各自的含义。 表1 vmstat命令常用选项及含义 选项含义-fs-f显示从启动到目前为止系统复制fork的程序数此信息是从 /proc/stat 中的 processes 字段中取得的。 -s将从启动到目前为止由一些事件导致的内存变化情况列表说明。-S 单位令输出的数据显示单位例如用 K/M 取代 bytes 的容量。-d列出硬盘有关读写总量的统计表。-p 分区设备文件名查看硬盘分区的读写情况。 例如 [rootlocalhost proc]# vmstat 1 3 #使用vmstat检测每隔1秒刷新一次共刷新3次 procs ——memory—— swap —io system ——cpu—— r b swpd free buff cache si so bi bo in cs us sy id wa st r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0 0 0 0 407368 55772 84644 0 0 0 0 12 10 0 0 100 0 0 0 0 0 407368 55772 84644 0 0 0 0 15 13 0 0 100 0 0 该命令输出信息中各个字段以及含义如表 2 所示。 表 2 vmstat 命令输出字段及含义 字段含义procs 进程信息字段 -r等待运行的进程数数量越大系统越繁忙。-b不可被唤醒的进程数量数量越大系统越繁忙。memory 内存信息字段 -swpd虚拟内存的使用情况单位为 KB。-free空闲的内存容量单位为 KB。-buff缓冲的内存容量单位为 KB。-cache缓存的内存容量单位为 KB。swap 交换分区信息字段 -si从磁盘中交换到内存中数据的数量单位为 KB。-so从内存中交换到磁盘中数据的数量单位为 KB。这两个数越大表明数据需要经常在磁盘和内存之间进行交换系统性能越差。 io 磁盘读/写信息字段 -bi从块设备中读入的数据的总量单位是块。-bo写到块设备的数据的总量单位是块。这两个数越大代表系统的 I/O 越繁忙。 system 系统信息字段 -in每秒被中断的进程次数。-cs每秒进行的事件切换次数。这两个数越大代表系统与接口设备的通信越繁忙。 cpu CPU信息字段 -us非内核进程消耗 CPU 运算时间的百分比。-sy内核进程消耗 CPU 运算时间的百分比。-id空闲 CPU 的百分比。-wa等待 I/O 所消耗的 CPU 百分比。-st被虚拟机所盗用的 CPU 百分比。 本机是一台测试用的虚拟机并没有多少资源被占用所以资源占比都比较低。如果服务器上的资源占用率比较高那么使用 vmstat 命令查看到的参数值就会比较大我们就需要手工进行干预。如果是非正常进程占用了系统资源则需要判断这些进程是如何产生的不能一杀了之如果是正常进程占用了系统资源则说明服务器需要升级了。 二十三、Linux 查看开机信息dmesg命令 Linux dmesg命令显示开机信息 通过学习《Linux启动管理》一章可以知道在系统启动过程中内核还会进行一次系统检测第一次是 BIOS 进行加测但是检测的过程不是没有显示在屏幕上就是会快速的在屏幕上一闪而过那么如果开机时来不及查看相关信息我们是否可以在开机后查看呢 答案是肯定的使用 dmesg 命令就可以。无论是系统启动过程中还是系统运行过程中只要是内核产生的信息都会被存储在系统缓冲区中如果开机时来不及查看相关信息可以使用 dmesg 命令将信息调出此命令常用于查看系统的硬件信息。 除此之外开机信息也可以通过 /var/log/ 目录中的 dmesg 文件进行查看。 dmesg 命令的用法很简单基本格式如下 [rootlocalhost ~]# dmesg 例如 [rootlocalhost ~]# dmesg | grep CPU #查看CPU的信息 Transmeta TransmetaCPU SMPAllowing 1 CPUs 0 hotplug CPUs NR_CPUS32 nr_cpumask_bits32 nr_cpu_ids1 nr_node_ids1 PERCPUEmbedded 14 pages/cpu c1a00000 s35928 r0 d21416 u2097152 Initializing CPU#0 CPUPhysical Processor ID0 mceCPU supports 0 MCE banks CPU0Intel(R) Core(TM) i7-3630QM CPU 2.40GHz stepping 09 Brought up 1 CPUs microcodeCPU0 sig0x306a9 pf0x1 revision0x12 [rootlocalhost ~]# dmesg | grep eth0 #查看第一块网卡的信息 eth0registered as PCnet/PCI II 79C970A eth0link up eth0no IPv6 routers present 二十四、Linux 查看内存使用状态free命令 Linux free命令查看内存使用状态 free 命令用来显示系统内存状态包括系统物理内存、虚拟内存swap 交换分区、共享内存和系统缓存的使用情况其输出和 top 命令的内存部分非常相似。 free 命令的基本格式如下 [rootlocalhost ~]# free [选项] 表 1 罗列出了此命令常用的选项及各自的含义。 表 1 free 命令常用选项及含义 选项含义-b以 Byte字节为单位显示内存使用情况。-k以 KB 为单位显示内存使用情况此选项是 free 命令的默认选项。-m以 MB 为单位显示内存使用情况。-g以 GB 为单位显示内存使用情况。-t在输出的最终结果中输出内存和 swap 分区的总量。-o不显示系统缓冲区这一列。-s 间隔秒数根据指定的间隔时间持续显示内存使用情况。 例如 [rootlocalhost ~]# free -m                   total       used    free   shared   buffers    cached Mem:           725        666      59           0       132         287 -/ buffers/cache:     245     479 Swap:           996            0     996 第一行显示的是各个列的列表头信息各自的含义如下所示 total 是总内存数used 是已经使用的内存数free 是空闲的内存数shared 是多个进程共享的内存总数buffers 是缓冲内存数cached 是缓存内存数。 Mem 一行指的是内存的使用情况-/buffers/cache 的内存数相当于第一行的 used-buffers-cached。/buffers/cache 的内存数相当于第一行的 freebufferscachedSwap 一行指的就是 swap 分区的使用情况。 可以看到系统的物理内存为 725 MB已经使用了 666 MB空闲 59 MB。而 swap 分区总大小为 996 MB目前尚未使用。 二十五、Linux 查看登陆用户信息w和who命令 Linux w和who命令查看登陆用户信息 Linux 中使用 w 或 who 命令都可以查看服务器上目前已登录的用户信息两者的区别在于w 命令除了能知道目前已登陆的用户信息还可以知道每个用户执行任务的情况。 首先介绍一下 w 命令的使用w 命令的基本格式如下 [rootlocalhost ~]# w [选项] [用户名] 此命令常用选项及含义如表 1 所示。如果 w 命令后跟 [用户名]则表示只显示此用户的信息。 表 1 w 命令的选项及含义 选项含义-h不显示输出信息的标题-l用长格式输出-s用短格式输出不显示登陆时间JCPU 和 PCPU 时间-V显示版本信息 【例 1】显示当前用户登陆信息。 [rootlocalhost ~]# w  13:13:56 up 13:00,  1 user,  load average: 0.08, 0.02, 0.01 USER   TTY    FROM              LOGIN   IDLE   JCPU   PCPU WHAT root    tty1    -                        11:04       0.00s  0.36s   0.00s  -bash root    pts/0  192.168.0.108   13:15       0.00s   0.06s   0.02s   w 上面的输出信息中第一行其实和 top 命令的第一行非常类似主要显示了当前的系统时间、系统从启动至今已运行的时间、登陆到系统中的用户数和系统平均负载。 平均负载load average指的是在 1 分钟、5 分钟、15 分钟内系统的负载状况。 从第二行开始显示的是当前所有登陆系统的用户信息第二行是用户信息的各列标题从第三行开始每行代表一个用户。这些标题的含义如表 2 所示。 表 2 w 命令输出信息各列标题及含义 标题含义USER登录到系统的用户。TTY登录终端。FROM表示用户从哪里登陆进来一般显示远程登陆主机的 IP 地址或者主机名。LOGIN用户登陆的日期和时间。IDLE表示某个程序上次从终端开始执行到现在所持续的时间。JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间但是包括当前正在运行的后台作业所占用的时间。PCPU当前进程所占用的 CPU 运算时间。WHAT当前用户正在执行的进程名称和选项换句话说就是表示用户当前执行的是什么命令。 从 w 命令的输出中已知Linux 服务器上已经登录了两个 root 用户一个是从本地终端 1 登录的tty1另一个是从远程终端 1 登录的pts/0登录的来源 IP 是 192.168.0.108。 相比较 w 命令who 命令只能显示当前登陆的用户信心但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下 [rootlocalhost ~]# who [选项] [file] 需要说明的是who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息但如果通过 file 指定另一个文件则 who 命令将不再默认读取 /var/run/utmp 文件而是读取该指定文件来获取信息。 有关 who 命令常用选项及含义如表 3 所示。 表 3 who 命令常用选项及含义 选项含义-a列出所有信息相当于所有选项。-b列出系统最近启动的时间日期。-l列出所有可登陆的终端信息。-m仅列出关于当前终端的信息who -m 命令等同于 who am i。-q列出在本地系统上的用户和用户数的清单。-r显示当前系统的运行级别。-s仅显示名称、线路和时间字段信息这是 who 命令的默认选项。-u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。-T 或 -w显示 tty 终端的状态“”表示对任何人可写“-”表示仅对 root 用户或所有者可写“”表示遇到线路故障。 【例 2】显示系统最新启动日期以及每个用户的登陆详情、终端状态。 [rootlocalhost ~]# who     --等同于 who -s root tty1 2013-06-07 0953 root pts/0 2013-06-07 0953 (192.168.0.108) #用户名 登录终端 登录时间登录来源IP 二十六、Linux 查看过去登陆的用户信息last和lastlog命令 Linux last和lastlog命令查看过去登陆的用户信息 前面我们已经学了使用 w 或 who 命令查看当前登陆系统的用户信息但如果原先登录的用户现在已经退出登录那么是否还能查看呢当然可以这就需要使用 last 和 lastlog 命令。 last 命令可以查看当前和过去登陆系统用户的相关信息lastlog 命令可以查看到每个系统用户最近一次登陆系统的时间。 我们先来看看 last 命令此命令的基本格式如下所示 [rootlocalhost ~]# last [选项] 表 1 罗列出了该命令常用的选项及含义。 表 1 last 命令常用选项及含义 选项含义-a把从何处登陆系统的主机名或 IP 地址显示在最后一行。-R不显示登陆系统的主机名或 IP 地址。-x显示系统关机、重新开机以及执行等级的改变等信息。-n 显示列数设置列出信息的显示列数。-d将显示的 IP 地址转换成主机名称。 在执行 last 命令时它默认会读取 /var/log/wtmp 日志文件这是一个二进制文件不能直接用 vi 编辑只能通过 last 命令调用。 【例 1】查询当前和过去登录的用户信息。 [rootlocalhost ~]# last root pts/0 192.168.0.108 Fri Jun 7 0953 still logged in root tty1 Fri Jun 7 0953 still logged in root pts/0 192.168.0.101 Fri Jun 7 0653 - 0952 (0259) root pts/1 192.168.0.103 Fri Jun 7 0412 - 0430 (0018) #用户名 登录终端 登录IP 登录时间 - 退出时间在线时间 reboot system boot 2.6.32-279.el6.i Thu Jun 6 2353 - 0003 (0009) #还能看到系统的重启时间 …省略部分输出… 再来看看 lastlog 命令此命令可以查看登陆过当前系统用户的最近一次登陆时间比如 [rootlocalhost ~]#lastlog #用户名        端口    来自                最后登陆时间 Username    Port   From                Latest root             pts/1  192.168.1.100  Wed Mar  4 11:04:22 0800 2009 bin                                                  **Never logged in** ....(中间省略).... vbird1          pts/2  192.168.1.100  Wed Mar  4 13:15:56 0800 2009 ....(以下省略).... lastlog 命令默认是去读取 /var/log/lastlog 日志文件的这个文件同样是二进制文件不能直接用 vi 编辑需要使用 lastlog 命令调用。
http://www.zqtcl.cn/news/306634/

相关文章:

  • 福州网站设计软件公司学校网站源码wordpress
  • 网站seo推广优化报价表广州哪个区封了
  • 网站第三方统计代码网页设计图片大小
  • 网上推广网站夸克搜索引擎
  • 什么是网站根目录做动态图片下载哪个网站好
  • 花钱让别人做的网站版权是谁的o2o网站建设如何
  • 电子商务网站建设策划书的流程wordpress原理
  • 微信公众号文章排版设计软媒win7优化大师
  • 长春建设局网站处长做箱包关注哪个网站
  • 中国建筑集团有限公司怎么样seo是怎么优化推广的
  • 芜湖建设网站eclipse开发网站用vue做前端
  • 外贸网站推广制作教程wordpress留言页面模版
  • 手机网站 像素网站建设生意怎么样
  • html5网站源代码凡科互动app下载
  • asp评价网站开发文档福州做网站的哪家好
  • 合肥网站建设方案优化写作网站大全
  • 专门提供做ppt小素材的网站网站定位
  • 临沂市建设局兰山区网站wordpress 去除下划线
  • 如何做一张图片的网站关于实验室建设的英文网站
  • 网站建设文本居中代码山东网站推广营销设计
  • 山东桓台建设招投标网站北京建设信息港网站
  • 为什么网站要域名个人养老金制度最新消息
  • 公众号开发是不是网站开发公司网站建设分录
  • 云南省住房建设厅网站代理二级分销系统
  • 四川建设人才培训网站临沂网站制作页面
  • 用vue做网站建设工程合同属于什么合同
  • 赶集的网站怎么做广告投放报价
  • php 家政网站白嫖云服务器
  • 长春网站关键词推广优秀网站建设哪个公司好
  • php实战做网站视频教程站长工具网站测速