预2019-03-22

sgid的作用见识让普通作用之一:

sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,

拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。

locate搜索内容,默认从updatedb对应的数据库中查找

updatedb 更新locate查找内容对应的数据库。

[root@oldboyedu ~]# updatedb

[root@oldboyedu ~]#  ls -l /var/lib/mlocate/mlocate.db

-rw-r----- 1 root slocate 1977042 Oct  8 00:47 /var/lib/mlocate/mlocate.db

[root@oldboyedu ~]# file /var/lib/mlocate/mlocate.db

/var/lib/mlocate/mlocate.db: data

sgid基于目录的作用:

让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限


1)Linux基本9位权限之文件和目录权限详细说明。

2)Linux基本9位权限之字符和数字(8进制)权限知识。

3)权限及用户用户组属性修改命令chmod、chown、chgrp。

4)默认权限umask以及系统目录安全案例。

5)特殊权限Suid知识掌握,Sgid和sticky知识了解

第十三章Linux系统定时任务Cron(d)服务应用实践

1,周期性的执行任务计划的任务计划软件,Linux定时任务的常用软件ceond

2,使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。

例如:备份  都是0点以后,2点爬起来备份,4点以后睡觉。

需要写一个程序实现自动备份,然后让定时任务软件帮你执行。

相当于一个闹钟。。。。

3,怎么用。

(1)系统任务定时计划

1,不用管理员干预,系统自动执行

2,也可以利用 系统任务为管理员服务。

[root@oldboy ~]# ll /var/log/messages*

-rw-------. 1 root root  96594 Mar 21 12:40 /var/log/messages

-rw-------. 1 root root 485249 Mar 20 10:46 /var/log/messages-20190320

[root@oldboy ~]# ll /var/log/secure*

-rw-------. 1 root root 1430 Mar 21 12:50 /var/log/secure

-rw-------. 1 root root 2695 Mar 20 10:46 /var/log/secure-20190320

[root@oldboyedu /etc/cron.daily]# ll /etc/cron.daily/logrotate  /etc/logrotate.conf

-rwx------. 1 root root 219 Oct 31  2018 /etc/cron.daily/logrotate

-rw-r--r--. 1 root root 662 Jul 31  2013 /etc/logrotate.conf

按天切割日志,就可以用logrotate。

(2)用户定时任务计划

在Linux中,

cron 是定时任务的软件名

crond是服务进程名,真正实现定时任务

crontab命令是用来设置定时任务规则的配置命令。

要想配置定时任务,首先启动crond服务。

systemctl start crond.service

systemctl stop crond.service

systemctl status crond.service

开启自启动:

systemctl disable crond.service

systemctl enable crond.service

[root@oldboyedu ~]# systemctl status crond

● crond.service - Command Scheduler

  Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

  Active: active (running) since Thu 2020-10-08 01:56:12 CST; 2min 26s ago

Main PID: 13189 (crond)

  CGroup: /system.slice/crond.service

          └─13189 /usr/sbin/crond -n

Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (RANDOM_DELAY will be...)

Oct 08 01:56:12 oldboyedu systemd[1]: Started Command Scheduler.

Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (running with inotify...)

Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (@reboot jobs will be...)

Hint: Some lines were ellipsized, use -l to show in full.

crontab命令是用来设置定时任务规则的配置命令。

内容存放哪里了。定时任务内容存放的位置/var/spool/cron/以当前用户名作为文件名

[root@oldboyedu ~]# ll /var/spool/cron/

total 8

-rw------- 1 oldboy oldboy 10 Oct  8 02:04 oldboy

-rw------- 1 root  root    6 Oct  8 02:02 root

[root@oldboyedu ~]# cat /var/spool/cron/oldboy

###oldboy

-l l列表 查看已经设置的定时任务*

-e edit 编辑定时任务*

-u user 查看特定用户下定时任务

root:

crontab -l == cat /var/spool/cron/root

crontab -e == vim /var/spool/cron/root

编写定时任务的语法:

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  *  (command to be executed)

共六列:

第一列:分 minute (0 - 59)

第二列:时 hour  (0 - 23)

第三列:日 day of month (1 - 31)

第四列:月 month (1 - 12) OR jan,feb,mar,apr ...

第五列:周 day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

第六列:要执行的任务命令或程序

特殊符号

* 表示每 或每一天 的意思

00 23 * * *    cmd

-连续分隔符  1-10

00  8-23  *  *  *  cmd

,  列举的意思

00 1,2,3,4,5,6  * * * cmd

\n  n是任意一个数字, 是“每隔单位时间”,如:每隔10分钟执行一次任务可以写成

*/10  *  *  * cmd

分 时                天      月      星期

30    9            *            0        *

30    8            *          *          *

=============================================

*/1 * * * * /bin/sh /scripts/data.sh

30 3,12 * * * /bin/sh /scripts/oldboy.sh

30 */6 * * *    /bin/sh /scripts/oldboy.sh

30 8-18/2 * * * /bin/sh /scripts/oldboy.sh

45 4 1,10,22 * * /application/apache/bin/apachectl graceful

10 1 * * 6,0 /application/apache/bin/apachectl graceful

0,30 18-23 * * * /application/apache/bin/apachectl graceful

00 */1 * * * /application/apache/bin/apachectl graceful

#################

* 23,00-07/1 * * * /application/apache/bin/apachectl graceful

00 */1 * * *

00 11 * 4 1-3 /application/apache/bin/apachectl graceful

老男孩思想:

1)先输入* * * * *

2)先命令行操作成功。

3)拷贝命令到定时任务编辑里。

同步电脑时间安装包与

范例13-2:让服务器时间每5分钟和互联网时间做一次同步。

安装时间服务软件:yum install ntpdate -y

更新互联网时间 /usr/sbin/ntpdate 

ntp1.aliyun.com

范例13-2:让服务器时间每5分钟和互联网时间做一次同步。

安装时间服务软件:yum install ntpdate -y

更新互联网时间 /usr/sbin/ntpdate ntp1.aliyun.com

/dev/null 黑洞设备

MH370>/dev/null

&>/dev/null 等价>/dev/null 2>&1

[root@oldboyedu ~]# crontab -l

*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

范例13-3:每天晚上0点,把站点目录/var/www/html下的内容打包备份到/data目录下,并且要求每次生成不同的备份包名。

至少分三步:

1.命令行稿成功

准备工作:

[root@oldboyedu ~]# mkdir /var/www/html /data -p

具体命令:

[root@oldboyedu ~]# tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/

tar: Removing leading `/' from member names

/var/www/html/

[root@oldboyedu ~]# ll /data

total 4

-rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz

2、编写定时任务

[root@oldboyedu ~]# crontab -l

00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/

错了,不执行。。。。

看报错日志。。。错误日志

定时任务没有执行,出错了日志在哪里?

出错日志/var/log/cron

Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_$(date +)

定时任务对%的要求,百分号要转义。\%

优秀的答案(企业里):

1.命令行执行

cd /var/www

tar zcf /data/html_$(date +%F).tar.gz ./html

2.尽量用脚本文件实现

#mkdir /server/scripts -p #存放脚本的文件

运维规范:

脚本位置:/server/scripts

软件位置:/server/tools

编译位置:/application/软件名字-版本,然后要软链接。

13.5生产环境下的定时Cron书写要领

13.5.1  要领1:为定时任务规则加必要的注释

13.5.2  要领2:所有的定时任务尽量都以脚本的形式执行

13.5.3  要领3:在执行的Shell脚本前加上/bin/sh

13.5.4  要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1

13.5.5  要领5:在指定用户下执行相关定时任务

13.5.6  要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。

13.5.7  要领7:定时任务执行的脚本要存放到规范路径下

13.5.8  要领8:配置定时任务要规范操作过程,减少出错

13.5.9  要领9:定时任务脚本中程序命令及路径尽量用全路径

13.5.10 要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)

13.5.11 要领11:若脚本中调用了系统环境变量,要重新定义

13.5.11 要领12:出错或无法执行,就检查/var/log/cron日志

你可能感兴趣的:(预2019-03-22)