Summary01 - cron任務、grep、find命令
##############################################################
cron計劃任務
cron任務概述
• 用途:按照設定的時間間隔為使用者反覆執行某一項固定的系統任務
• 軟體包:cronie、crontabs
• 系統服務:crond
• 日誌檔案:/var/log/crond
如何編寫crontab任務記錄
– 分 時 日 月 周 任務命令列(絕對路徑)
* * * * *
* : 匹配範圍內任意時間
, : 分隔多個不連續的時間點
- : 指定連續時間範圍
/n :指定時間頻率,每n ...
• 使用 crontab 命令
– 編輯:crontab -e [-u 使用者名稱]
每分鐘記錄 當前系統的時間, 寫入到/opt/time.txt
虛擬機器Server
[root@server0 ~]# date
2018年 03月 15日 星期四 10:10:27 CST
[root@server0 ~]# crontab -e -u root
*/1 * * * * date >> /opt/time.txt
[root@server0 ~]# cat /opt/time.txt
例子:
每天早上6點
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從螢幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了。
每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
1月1日早上4點
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有資料輸出,資料作為郵件發給這個帳號 HOME=/
每小時執行/etc/cron.hourly內的指令碼
01 * * * * root run-parts /etc/cron.hourly
每天執行/etc/cron.daily內的指令碼
0 24 * * * root run-parts /etc/cron.daily
每星期執行/etc/cron.weekly內的指令碼
22 4 * * 0 root run-parts /etc/cron.weekly
每月去執行/etc/cron.monthly內的指令碼
42 4 1 * * root run-parts /etc/cron.monthly
注意: "run-parts"這個引數了,如果去掉這個引數的話,後面就可以寫要執行的某個指令碼名,而不是資料夾名。
每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。
5,15,25,35,45,55 16,17,18 * * * command
每週一,三,五的下午3:00系統進入維護狀態,重新啟動系統。
00 15 * * 1,3,5 shutdown -r +5
每小時的10分,40分執行使用者目錄下的innd/bbslin這個指令:
10,40 * * * * innd/bbslink
每小時的1分執行使用者目錄下的bin/account這個指令:
1 * * * * bin/account
#######################################################
grep命令擴充套件
匹配空行: ^$
[root@server0 ~]#grep -Pv "^(#|$)" /etc/dnsmasq.conf //去除註釋和空行
[root@server0 ~]# grep -v '^$' /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
顯示一個/etc/login.defs 配置檔案有效配置(去掉以#開頭的 註釋 去掉空行)
[root@server0 ~]# grep -v '^#' /etc/login.defs
[root@server0 ~]# grep -v '^#' /etc/login.defs | grep -v '^$'
# grep -v '^#' /etc/login.defs | grep -v '^$' | cat -n
###############################################################
find 按條件查詢檔案
• 根據預設的條件遞迴查詢對應的檔案
– find [目錄] [條件1] [-a|-o] [條件2] ...
– 常用條件表示:
-type 型別(f檔案、d目錄、l快捷方式)
-name "文件名稱"
-size +|-檔案大小(k、M、G)
-user 使用者名稱
[root@server0 ~]# find /boot/ -type l #查詢是快捷方式
/boot/grub/menu.lst
[root@server0 ~]# ls -l /boot/grub/menu.lst
[root@server0 ~]# find /boot/ -type d #查詢是目錄
[root@server0 ~]# find /boot/ -type f #查詢是文字檔案
請顯示/etc目錄下以 .conf結尾的?(包含子目錄)
[root@server0 ~]# find /etc -name "*.conf"
請顯示/etc目錄下以 .conf結尾的?(不包含子目錄)
[root@server0 ~]# ls /etc/*.conf
[root@server0 ~]# mkdir /root/nsd1802
[root@server0 ~]# touch /root/nsd01.txt
[root@server0 ~]# touch /root/nsd18.txt
[root@server0 ~]# find /root/ -name "nsd*"
[root@server0 ~]# find /root/ -name "nsd*" -type f
[root@server0 ~]# find /root/ -name "nsd*" -type d
-size +|-檔案大小(k、M、G)
[root@server0 ~]# find /boot/ -size +10M
[root@server0 ~]# find /boot/ -size +300k
[root@server0 ~]# find /boot/ -size -10M
-user 使用者名稱
[root@server0 ~]# find / -user student -type f
[root@server0 ~]# useradd wangwu
[root@server0 ~]# find / -user wangwu
[root@server0 ~]# find / -user wangwu -type d
#############################################################
find結果處理
[root@server0 ~]# rm -rf /opt/*
[root@server0 ~]# ls /opt/
[root@server0 ~]# find /boot/ -size +300k
• 使用find命令的 -exec 操作
– find .. .. -exec 處理命令 {} \;
– 優勢:以 {} 代替每一個結果,逐個處理,遇 \; 結束
# find /boot/ -size +300k -exec cp -r {} /opt \;
# ls /opt/
# find / -user student -type f
# mkdir /root/findfile
# find / -user student -type f -exec cp {} /root/findfile \;
# ls /root/findfile
################################################################
案例練習,準備:
rht-vmctl reset classroom
rht-vmctl reset server
rht-vmctl reset desktop
########################################################################
案例1:為虛擬機器 server0 配置以下靜態地址引數
– 主機名:server0.example.com
[root@server0 ~]# vim /etc/hostname
– IP地址:172.25.0.11
– 子網掩碼:255.255.255.0
– 預設閘道器:172.25.0.254
[root@server0 ~]# nmcli connection modify 'System eth0' ipv4.method manual ipv4.addresses '172.25.0.11/24 172.25.0.254' connection.autoconnect yes
[root@server0 ~]# nmcli connection up 'System eth0'
– DNS伺服器:172.25.254.254
[root@server0 ~]# vim /etc/resolv.conf
nameserver 172.25.254.254
案例2:為虛擬機器 desktop0 配置以下靜態地址引數
– 主機名:desktop0.example.com
[root@desktop0 ~]# vim /etc/hostname
– IP地址:172.25.0.10
– 子網掩碼:255.255.255.0
– 預設閘道器:172.25.0.254
[root@desktop0 ~]# nmcli connection modify 'System eth0' ipv4.method manual ipv4.addresses '172.25.0.10/24 172.25.0.254' connection.autoconnect yes
[root@server0 ~]# nmcli connection up 'System eth0'
– DNS伺服器:172.25.254.254
[root@desktop0 ~]# vim /etc/resolv.conf
案例3:指定yum軟體源
為 server0 指定可用的 yum 軟體源
– YUM軟體庫的地址為 http://classroom.example.com/content/rhel7.0/x86_64/dvd
[root@server0 ~]# vim /etc/yum.repos.d/dvd.repo
– 將此配置為虛擬機器 server0 的預設軟體倉庫
– 確認可用的倉庫列表
[root@server0 ~]# yum repolist
– 利用yum倉庫安裝httpd與vsftpd
[root@server0 ~]# yum install httpd
[root@server0 ~]# yum -y install vsftpd
案例4:指定yum軟體源
為 desktop0 指定可用的 yum 軟體源
– YUM軟體庫的地址為 http://classroom.example.com/content/rhel7.0/x86_64/dvd
[root@desktop0 ~]# vim /etc/yum.repos.d/dvd.repo
– 將此配置為虛擬機器 server0 的預設軟體倉庫
[rhel]
name=rhel7.0
baseurl=http://classroom.example.com/content/rhel7.0/x86_64/dvd
enabled=1
gpgcheck=0
– 確認可用的倉庫列表
[root@desktop0 ~]# yum repolist
– 利用yum倉庫安裝httpd與vsftpd
[root@desktop0 ~]# yum -y install httpd
[root@desktop0 ~]# yum -y install vsftpd
案例5:虛擬機器 server0上操作,複製、貼上、移動
以root使用者新建/nsddir/目錄,在此目錄下新建readme.txt檔案,並進一步完成下列操作
1)將“I love Linux”寫入到檔案readme.txt
[root@desktop0 nsddir]# vim readme.txt
2)將readme.txt重新命名為mylove.txt
[root@desktop0 nsddir]# mv readme.txt mylove.txt
3)將/etc/passwd、/boot、/etc/group同時拷貝到/nsddir目錄下
[root@desktop0 nsddir]# cp -r /etc/passwd /boot/ /etc/group /nsddir/
4)將ifconfig命令的前兩行內容,追加寫入mylove.txt
[root@desktop0 nsddir]# ifconfig |head -2 >> mylove.txt
5)將主機名永久配置檔案,拷貝到/nsddir目錄下
[root@desktop0 nsddir]# cp /etc/hostname /nsddir/
6)將DNS永久配置檔案,拷貝到/nsddir目錄下
[root@desktop0 nsddir]# cp /etc/resolv.conf /nsddir/
案例6:虛擬機器Server上操作:複製、刪除、移動及vim文字編輯器
1. 新建目錄結構/nsd/test
[root@desktop0 nsddir]# mkdir -p /nsd/test
2. 在目錄/nsd/test建立檔案nsd.txt並寫入內容 NSD Student
[root@desktop0 test]# vim nsd.txt
3. 將/nsd/test/nsd.txt檔案複製到/root目錄下,同時 改名為 tedu.txt
[root@desktop0 test]# cp /nsd/test/nsd.txt /root/tedu.txt
4. 利用vim 修改檔案/etc/hostname將其原有內容全部刪除,寫入新的內容為server0.example.com
[root@desktop0 ~]# vim /etc/hostname
5. 將/etc/passwd 、/etc/resolv.conf、/etc/hostname 同時拷貝到/nsd/test/目錄下
[root@desktop0 ~]# cp -r /etc/passwd /etc/resolv.conf /etc/hostname /nsd/test/
6. 將檔案 /nsd/test/hostname 重改名為 hn.txt
[root@desktop0 test]# mv /nsd/test/hostname /nsd/test/hn.txt
7. 建立目錄結構/nsd/test/kernel
[root@desktop0 test]# mkdir kernel
8. 將目錄 /boot內容中以 vm 開頭的 複製到/nsd/test/kernel目錄下
[root@desktop0 test]# find /boot/ -name 'vm*' -exec cp {} /nsd/test/kernel \;
案例7:虛擬機器 server0上操作,查詢並處理檔案
– 利用find查詢所屬使用者 student 擁有的必須是檔案,把它們拷貝到 /root/findfiles/ 資料夾中
[root@desktop0 findfiles]# find / -user student -type f -exec cp {} /root/findfiles/ \;
– 利用find查詢/boot目錄下大於10M並且必須是檔案,拷貝到/opt
[root@desktop0 findfiles]# find /boot/ -size +10M
– 利用find查詢/boot/ 目錄下以 vm 開頭且必須是檔案,拷貝到/opt
[root@desktop0 findfiles]# find /boot/ -name 'vm*' -type f -exec cp {} /opt/ \;
– 利用find查詢/boot/ 目錄下為快捷方式
[root@desktop0 opt]# find /boot/ -type l
– 利用find查詢/etc 目錄下,以 tab 作為結尾的 必須是檔案
[root@desktop0 grub]# find /etc/ -name '*tab' -type f
案例8:虛擬機器 server0上操作,查詢並提取檔案內容
1.在檔案 /usr/share/dict/words 中查詢到所有包含字串 seismic 的行,將輸出資訊,寫入到/opt/nsd18.txt
[root@desktop0 grub]# grep 'seismic' /usr/share/dict/words > /opt/nsd18.txt
2.檢視核心版本,將顯示結果重定向到/root/version.txt
[root@desktop0 opt]# uname -r > /root/version.txt
3.檢視紅帽系統版本,將顯示結果追加到/root/version.txt
[root@desktop0 ~]# cat /etc/redhat-release >> /root/version.txt
4.檢視主機名將顯示結果追加到/root/version.txt
[root@desktop0 ~]# hostname >> /root/version.txt
5.將/etc/fstab檔案中以UUID開頭的資訊,寫入到/root/fstab.txt
[root@desktop0 ~]# grep '^UUID' /etc/fstab >> /root/fstab.txt
6.提取/etc/passwd以bash結尾的行,將其資訊寫入/opt/pass.txt
[root@desktop0 ~]# grep 'bash$' /etc/passwd >> /opt/pass.txt
7. 複製/etc/login.defs檔案到當前目錄下,改名為init.txt
[root@desktop0 ~]# cp /etc/login.defs /root/init.txt
8.提取init.txt檔案裡的有效配置(去除以#號開頭,去除空行),儲存為init2.txt
[root@desktop0 ~]# grep -v '^#' init.txt | grep -v '^$' > init2.txt
案例9:虛擬機器 server0上操作,tar製作/釋放歸檔壓縮包(zcf、ztf、zxf、jcf、jtf、jxf、cf、tf)
1)備份/boot、/home這兩個資料夾,儲存為boothome.tar.gz檔案
[root@desktop0 ~]# tar -zcf /opt/boothome.tar.gz /boot/ /home/
2)檢視boothome.tar.gz檔案內包含哪些內容
[root@desktop0 opt]# tar -tf boothome.tar.gz
3)將boothome.tar.gz釋放到資料夾/root/boothome/下
[root@desktop0 opt]# tar -xf /opt/boothome.tar.gz -C /root/boothome/
4)建立一個名為 /root/backup.tar.bz2 的歸檔檔案,其中包含 /usr/local 目錄中的內容
[root@desktop0 boothome]# tar -jcf /root/backup.tar.bz2 /usr/local/
案例10:虛擬機器 server0上操作
• 新建使用者 alex,其使用者ID為3456,密碼是flectrag
[root@desktop0 ~]# useradd -u 3456 alex
[root@desktop0 home]# passwd alex
• 建立下列使用者、組以及組的成員關係:
– 一個名為 adminuser 的組
[root@desktop0 ~]# groupadd adminuser
– 一個名為 natasha 的使用者,其屬於 adminuser 組, 這個組是該使用者的從屬組
[root@desktop0 ~]# useradd -G adminuser natasha
– 一個名為 harry 的使用者,其屬於 adminuser 組,這個 組是該使用者的從屬組
[root@desktop0 ~]# useradd -G adminuser harry
– 一個名為 sarah 的使用者,其在系統中沒有可互動的 Shell(/sbin/nologin),並且不是 adminuser 組的成員
[root@desktop0 home]# useradd -s /sbin/nologin sarah
– natasha 、harry、sarah 的密碼都要設定為 flectra
[root@desktop0 home]# echo flectra | passwd --stdin natasha
更改使用者 natasha 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@desktop0 home]# echo flectra | passwd --stdin harry
更改使用者 harry 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@desktop0 home]# echo flectra | passwd --stdin sarah
更改使用者 sarah 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
案例11:組賬號基本管理
1)新建組賬號stugrp
[root@desktop0 home]# groupadd stugrp
2)建立使用者lily、zhangsan
[root@desktop0 home]# useradd lily
[root@desktop0 home]# useradd zhangsan
3)為stugrp組新增三個成員使用者(lily、root、zhangsan)
[root@desktop0 home]# gpasswd -a lily stugrp
[root@desktop0 home]# gpasswd -a root stugrp
[root@desktop0 home]# gpasswd -a zhangsan stugrp
4)從stugrp組刪除一個成員(lily)
[root@desktop0 home]# gpasswd -d lily stugrp
案例12:配置NTP網路時間客戶端
[root@desktop0 home]# yum -y install chrony 1.安裝軟體
配置虛擬機器 server0,自動校對系統時間
NTP伺服器位於 classroom.example.com
[root@desktop0 home]# vim /etc/chrony.conf 2.修改配置檔案
server classroom.example.com iburst
此客戶機的時間與NTP伺服器的時間保持同步
[root@desktop0 home]# systemctl restart chronyd.service 3.重啟服務
[root@desktop0 home]# systemctl enable chronyd 4.將服務設定為開機自啟動
案例13:虛擬機器 server0上操作
為使用者 natasha 配置一個定時任務
– 每天在本地時間 14:23 執行
– 需要完成的任務操作為 /bin/echo hiya
[natasha@server0 home]$ crontab -e
23 14 * * * /bin/echo hiya
相關文章
- grep、find命令整理
- Golang——Cron 定時任務Golang
- linux定時任務cron配置Linux
- Linux 搜尋命令總結 – whereis,which,locate,find,grepLinux
- 如何在Linux中加入cron任務Linux
- 排查linux 定時任務cron crontabLinux
- 教你如何使用 cron 來安排任務
- Laravel Cron 定時任務 “跳坑” 點Laravel
- 使用at和cron實現任務計劃
- 5分鐘學會使用Linux的 grep、find、ls、wc 命令Linux
- Linux下的五個查詢命令:grep、find、locate、whereis、whichLinux
- linux下的find 和 grepLinux
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux
- 如何使用cron任務每隔2天在固定時間執行任務
- 【Linux命令】grep命令Linux
- 在 Linux 中怎麼使用 cron 計劃任務Linux
- linux基礎(四)——任務排程cron和anacronLinux
- Linux grep 命令Linux
- Linux命令篇 - grep 命令Linux
- GO的定時器Timer 和定時任務cronGo定時器
- find命令
- Linux 中怎麼設定計劃任務:cron 與 anacronLinux
- java 定時任務 quartz 時間表示式Cron總結Javaquartz
- linux每日命令(35):grep命令Linux
- Linux命令:grep命令AND、OR、NOT例項Linux
- 【SHELL】grep 命令用法
- linux命令之grepLinux
- git grep命令用法Git
- grep 命令系列:使用 grep 命令來搜尋多個單詞
- 在 Linux 中安全且輕鬆地管理 Cron 定時任務Linux
- find -newer命令
- Linux grep命令的使用Linux
- Linux基礎命令---grepLinux
- 使用Node.js的Node-cron進行任務排程 - DilinaNode.js
- shell指令碼專題-----cat,find,grep,awk,sed(五)指令碼
- `find` 命令詳解
- find 命令及其示例
- find 命令入門