day021-定時任務

文章目錄

  • 1. cron
    • 1.1 檢查是否安裝
    • 1.2 檢查是否開機自啟動
    • 1.3 配置文件與相關命令
    • 1.4 配置文件格式
  • 2. 案例
    • 2.1 同步時間
    • 2.2 定時備份/etc和/var/log目錄
    • 2.3 定時巡檢腳本
  • 3. 練習三劍客過濾
    • 3.1 去重統計ip數量
    • 3.2 去重統計第7列 用戶訪問的url的數量
    • 3.3 去重統計第9列 狀態碼與數量
    • 3.4 添加條件統計指定范圍,指定日期的日志情況.
    • 3.5 書寫腳本自動完成上面統計
  • 4. 踩坑記錄
    • 4.1 /bin和/usr/bin的關系(/sbin和/usr/sbin)?
    • 4.2 虛擬機進入緊急模式
    • 4.3 sort: 寫入失敗: /tmp/sort2f2zkI: 設備上沒有空間
  • 5. 思維導圖

1. cron

  • cron:官方定義就是 “Chronos(時間)” 的簡寫,與時間管理直接相關。

1.1 檢查是否安裝

[root@oldboy99-Kylin ~]# rpm -qa cron*
cronie-help-1.5.5-3.ky10.noarch
crontabs-help-1.11-21.ky10.noarch
cronie-1.5.5-3.ky10.x86_64
crontabs-1.11-21.ky10.noarch

1.2 檢查是否開機自啟動

[root@oldboy99-Kylin ~]# systemctl is-active crond.service 
active
[root@oldboy99-Kylin ~]# systemctl is-enabled crond.service 
enabled

1.3 配置文件與相關命令

  • cron的配置文件:/var/spool/cron/root
  • ubuntu中配置文件略有不同:/var/spool/cron/crontabs/root
cron命令選項說明
crontab-eedit,編輯cron配置文件
crontab-llist,顯示定時任務信息

1.4 配置文件格式

任務執行時間(*(分) *(時) *(日) *(月) *(周)) 執行命令或腳本

  • 注意任務執行后的結果輸出位置
  • 執行的命令要使用絕對路徑
符號說明
*表示所有時間
/表示間隔時間
-表示時間范圍

2. 案例

2.1 同步時間

  • 測試命令
[root@oldboy99-Ubuntu ~]# ntpdate ntp.aliyun.com
26 May 17:42:51 ntpdate[1886]: adjust time server 203.107.6.88 offset -0.000672 sec
  • 編輯定時任務
[root@oldboy99-Ubuntu ~]# crontab -l
# 同步時間
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
  • 查看cron日志:
  • kylin中cron日志位置:/var/log/cron
  • ubuntu中cron日志位置:/var/log/syslog
[root@oldboy99-Ubuntu ~]# tail -f /var/log/syslog
May 26 17:44:42 oldboy99-Ubuntu crontab[1912]: (root) BEGIN EDIT (root)
May 26 17:45:01 oldboy99-Ubuntu cron[840]: (root) RELOAD (crontabs/root)
May 26 17:45:01 oldboy99-Ubuntu cron[840]: (root.bak) ORPHAN (no passwd entry)
May 26 17:45:04 oldboy99-Ubuntu systemd[1]: Started Session 3 of User root.
May 26 17:46:29 oldboy99-Ubuntu crontab[1912]: (root) REPLACE (root)
May 26 17:46:29 oldboy99-Ubuntu crontab[1912]: (root) END EDIT (root)
May 26 17:46:35 oldboy99-Ubuntu crontab[1989]: (root) LIST (root)
May 26 17:47:01 oldboy99-Ubuntu cron[840]: (root) RELOAD (crontabs/root)
May 26 17:47:01 oldboy99-Ubuntu cron[840]: (root.bak) ORPHAN (no passwd entry)
May 26 17:48:01 oldboy99-Ubuntu CRON[2053]: (root) CMD (/usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1)
……

2.2 定時備份/etc和/var/log目錄

  • 腳本不要放在家目錄,否則可能有權限故障
[root@oldboy99-Ubuntu ~]# mkdir /server/scripts -p
[root@oldboy99-Ubuntu ~]# cd /server/scripts/
[root@oldboy99-Ubuntu /server/scripts]# cat bak-conf-log.sh 
#!/bin/bash#desc:備份etc和/var/log目錄
#author:孫克旭tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc
tar zcf /backup/log-`date +%F_%w`.tar.gz /var/log
[root@oldboy99-Ubuntu /server/scripts]# crontab -e
crontab: installing new crontab
[root@oldboy99-Ubuntu /server/scripts]# crontab -l
# 同步時間
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
# 備份/etc和/var/log目錄
0 0 * * * /usr/bin/bash /server/scripts/bak-conf-log.sh >/dev/null 2>&1

2.3 定時巡檢腳本

  • cron的不會默認輸出到屏幕,需要指定輸出文件
  • 獲取系統的各種信息
  • 編寫腳本
#!/bin/bash
#desc:巡檢腳本
#author:孫克旭#主機信息
hostname=`hostname`
ip=`hostname -I`
os=`hostnamectl |awk -F ': +' '/Operating System/{print $2}'`
kernel=`hostnamectl |awk -F ': +' '/Kernel/{print $2}'`
cpu_arch=`uname -m`cat << EOF
====主機基本信息====
主機名:$hostname
ip地址:$ip
系統版本:$os
內核版本:$kernel
CPU架構:$cpu_arch
EOF#進程信息
proc_total=`top -bn1 |awk 'NR==2{print $2}'`
proc_zom=`top -bn1 |awk 'NR==2{print $(NF-1)}'`cat << EOF
====進程信息====
進程總數:$proc_total
僵尸進程數:$proc_zom
EOF
  • 寫入定時任務:
[root@oldboy99-Ubuntu ~]# crontab -l
# 同步時間
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
# 備份/etc和/var/log目錄
0 0 * * * /usr/bin/bash /server/scripts/bak-conf-log.sh >/dev/null 2>&1
# 定時執行巡檢腳本
0 0 * * * /bin/bash /server/scripts/check_system.sh >>/server/scripts/check_system.log 2>&1

3. 練習三劍客過濾

  • 企業生產環境日志,壓縮包500mb左右,解壓后5gb左右,1000w行.
  1. 去重統計ip數量
  2. 去重統計第7列 用戶訪問的url的數量
  3. 去重統計第9列 狀態碼與數量.
  4. 添加條件統計指定范圍,指定日期的日志情況.
  5. 書寫腳本自動完成上面統計.

3.1 去重統計ip數量

# 解壓壓縮包
[root@oldboy99-Kylin ~/oldboy]# tar xf 1000w-oldboy-lidao996-access.log.tar.xz 
# 去重統計ip數量
[root@oldboy99-Kylin ~/oldboy]# awk '{print $1}' 1000w-oldboy-lidao996-access.log |sort |uniq -c |sort -k1nr |head185611 220.181.51.57185542 220.181.51.4197735 220.181.51.5896784 220.181.51.4267199 61.135.165.3666686 61.135.165.466686 61.135.169.566679 61.135.165.4266650 61.135.165.3966541 61.135.169.6

3.2 去重統計第7列 用戶訪問的url的數量

[root@oldboy99-Kylin ~/oldboy]# TMPDIR=./tmp/ awk '{print $7}' 1000w-oldboy-lidao996-access.log |sort -T ./tmp/ |uniq -c |sort -k1nr -T ./tmp/ |head -521696 /favicon.ico1192 /446 /recv.cm.php?_fbnVsbCxMRy9VODEyMC92MS4w65 /new/images/grey.gif54 /new/css/css.css

3.3 去重統計第9列 狀態碼與數量

[root@oldboy99-Kylin ~/oldboy]# TMPDIR=./tmp/ awk '{print $9}' 1000w-oldboy-lidao996-access.log |sort -T ./tmp/ |uniq -c |sort -k1nr -T ./tmp/ |head -5
5042786 302
4902220 20022541 40418193 49913464 502

3.4 添加條件統計指定范圍,指定日期的日志情況.

[root@oldboy99-Kylin ~/oldboy]# sed -n '/16:30:00/,/16:32:00/p' 1000w-oldboy-lidao996-access.log |wc -l
23454

3.5 書寫腳本自動完成上面統計

[root@oldboy99-Kylin /server/scripts]# cat test.sh
#!/bin/bash
#desc:練習三劍客
#author:孫克旭# 變量
log="/root/oldboy/1000w-oldboy-lidao996-access.log"
tmp="/root/oldboy/tmp"# 去重統計ip數量
echo "去重統計ip數量:"
awk '{print $1}' $log |sort |uniq -c |sort -k1nr |head# 去重統計第7列 url數量
echo "去重統計url數量:"
TMPDIR=$tmp awk '{print $7}' $log |sort -T $tmp |uniq -c |sort -k1nr -T $tmp |head -5# 去重統計第9列 狀態碼數量
echo "去重統計狀態碼數量:"
TMPDIR=$tmp awk '{print $9}' $log |sort -T $tmp |uniq -c |sort -k1nr -T $tmp |head -5# 統計指定日期范圍的數據
echo "統計指定范圍的數據:"
sed -n '/16:30:00/,/16:32:00/p' $log |wc -l
[root@oldboy99-Kylin /server/scripts]# bash test.sh 
去重統計ip數量:185611 220.181.51.57185542 220.181.51.4197735 220.181.51.5896784 220.181.51.4267199 61.135.165.3666686 61.135.165.466686 61.135.169.566679 61.135.165.4266650 61.135.165.3966541 61.135.169.6
去重統計url數量:21696 /favicon.ico1192 /446 /recv.cm.php?_fbnVsbCxMRy9VODEyMC92MS4w65 /new/images/grey.gif54 /new/css/css.css
去重統計狀態碼數量:
5042786 302
4902220 20022541 40418193 49913464 502
統計指定范圍的數據:
23454

4. 踩坑記錄

4.1 /bin和/usr/bin的關系(/sbin和/usr/sbin)?

  • 硬鏈接,可以看到inode值相同
[root@oldboy99-Kylin /bin]# ll -d /bin/ /usr/bin/ -i
201326747 dr-xr-xr-x 2 root root 45056  526 10:35 /bin/
201326747 dr-xr-xr-x 2 root root 45056  526 10:35 /usr/bin/
[root@oldboy99-Kylin ~]# ll -di /sbin/ /usr/sbin/
135 dr-xr-xr-x 2 root root 20480  526 10:35 /sbin/
135 dr-xr-xr-x 2 root root 20480  526 10:35 /usr/sbin/
  • ubuntu與kylin不同,是軟鏈接
[root@oldboy99-Ubuntu ~]# ll -di /bin /usr/bin/12 lrwxrwxrwx 1 root root     7 Feb 17  2024 /bin -> usr/bin/
1703938 drwxr-xr-x 2 root root 36864 May 13 16:04 /usr/bin//
[root@oldboy99-Ubuntu ~]# ll -di /sbin /usr/sbin/17 lrwxrwxrwx 1 root root     8 Feb 17  2024 /sbin -> usr/sbin/
1703947 drwxr-xr-x 2 root root 20480 May 13 15:51 /usr/sbin//

4.2 虛擬機進入緊急模式

  • 一開始認為是百度網盤自動備份虛擬機,導致虛擬機查找文件出現故障,后來一看虛擬機目錄,未發現有百度網盤相關文件
  • 查看下/etc/fstab
  • 之前把一個硬盤刪除了,系統中的硬盤名稱發生了改變

在這里插入圖片描述

在這里插入圖片描述

  • 將硬盤名改正即可

4.3 sort: 寫入失敗: /tmp/sort2f2zkI: 設備上沒有空間

  • sort -T /path/to/tmpdir:指定 sort 的臨時文件目錄
  • TMPDIR 環境變量:控制臨時目錄位置

5. 思維導圖

【金山文檔】 思維導圖 https://www.kdocs.cn/l/co3I7PtpTYQX

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84616.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于(stream)流

Stream 是 Java 8 引入的一個強大的功能&#xff0c;用于處理集合&#xff08;Collection&#xff09;或數組中的數據。它提供了一種聲明式的編程方式&#xff0c;可以極大地簡化對數據的操作&#xff0c;例如過濾、排序、映射和聚合等。 1. 什么是 Stream 流&#xff1f; 定義…

結課作業自選01. 內核空間 MPU6050 體感鼠標驅動程序(二)(完整實現流程)

目錄 一. 題目要求-內核空間 MPU6050 體感鼠標驅動程序 二. 偽代碼及程序運行流程 三. 主要函數詳解&#xff08;根據代碼流程進行詳解&#xff09; 3.1 module_i2c_driver宏&#xff08;對應“1”&#xff09; 3.2 mpu_of_match設備樹匹配表&#xff08;對應“2”&#x…

5G 核心網切換機制全解析:XN、N2 與移動性注冊對比

摘要 本文深入探討了 5G 核心網中的三種關鍵切換方式:基于 XN 接口的切換、基于 N2 接口的切換以及移動性注冊更新機制。通過對比分析它們的原理、應用場景和技術差異,幫助讀者全面理解 5G 網絡中用戶移動性管理的核心技術。 1. 引言 隨著 5G 技術的廣泛應用,用戶對網絡連…

用深度學習提升DOM解析——自動提取頁面關鍵區塊

一、時間軸&#xff1a;一次“抓不到重點”的二手車數據爬蟲事故 2025/03/18 09:00 產品經理希望抓取懂車帝平臺上“北京地區二手車報價”作為競品監測數據源。我們初步使用傳統XPath方案&#xff0c;試圖提取車型、年限、里程、價格等數據。2025/03/18 10:00 初版腳本運行失敗…

React與Vue的內置指令對比

React 與 Vue 不同&#xff0c;它沒有內置的模板指令系統。React 采用了 JavaScript 優先 的聲明式方式&#xff0c;使用 JSX 語法將 HTML 和 JavaScript 結合在一起。因此&#xff0c;React 中沒有類似 Vue 的 v-if、v-for、v-bind 等內置指令。 React 中的替代方案 條件渲染…

Spring聲明式事務源碼全鏈路剖析與設計模式深度解讀

Spring聲明式事務源碼全鏈路剖析與設計模式深度解讀 作者&#xff1a;AI 日期&#xff1a;2025-05-22 一、前言 Spring事務是企業級開發的基石&#xff0c;但“為什么有時事務失效&#xff1f;”、“不同傳播行為背后發生了什么&#xff1f;”、“Spring事務源碼到底如何實現&…

云原生安全基礎:深入探討容器化環境中的權限隔離與加固策略

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 在云原生環境中&#xff0c;容器化技術&#xff08;如 Docker 和 Kubernetes&#xff09;的廣泛應用帶來了靈活性與效率&#xff0c;但也引入了新的安全挑…

如何在 ONLYOFFICE 演示文稿中調整段落首行縮進

在制作演示文稿時&#xff0c;保持內容的一致性與可讀性至關重要&#xff0c;而段落首行縮進作為格式設置的關鍵環節&#xff0c;直接影響著整體呈現效果。在本文中&#xff0c;我們將介紹如何通過創建 ONLYOFFICE 宏&#xff0c;快速設置演示文稿中所有段落的首行縮進。 關于 …

[Asp.Net]GridView、Repeater 導出Excel長數字顯示成科學計數

類似身份證純數字的格式時 &#xff0c;excel默認是數字格式 變成了科學計數法 &#xff0c; GridView:RowDataBound 添加e.Row.Cells[2].Attributes.Add(“style”, “vnd.ms-excel.numberformat:;”); protected void GridView1_RowDataBound(object sender, GridViewRowE…

Ntfs!NtfsReadBootSector函數分析之nt!CcGetVacbMiss中得到一個nt!_VACB結構

第一部分&#xff1a; 1: kd> g Breakpoint 3 hit nt!CcGetVacbMiss: 80a1a19e 6a30 push 30h 1: kd> kc # 00 nt!CcGetVacbMiss 01 nt!CcGetVirtualAddress 02 nt!CcMapData 03 Ntfs!NtfsMapStream 04 Ntfs!NtfsReadBootSector Ntfs…

Linux10正式版發布,擁抱AI了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;10余年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲10萬 擅長主流Oracle、MySQL、PG、高斯…

關于 SSE(Server-Sent Events)過程的簡要解剖

Js前端&#xff1a;發送普通請求 fetch(...) .then(()>{}) .catch(()>{})Java后端&#xff1a;接收請求后調用請求處理函數&#xff0c;函數返回一個emiiter對象 public SseEmitter handleRequest(...) {// 創建一個 SseEmitter 對象&#xff0c;用于發送 SSE 事件SseE…

PyTorch 中unsqueeze(-1)用法

unsqueeze(-1) 是 PyTorch 中的一個張量操作&#xff0c;用于?在指定維度上增加一個長度為1的維度?&#xff08;即擴展維度&#xff09;。具體解析如下&#xff1a; 功能說明 ?作用位置? -1 表示在張量的?最后一個維度?后添加新維度。 &#xff08;等價于 dimlen(tensor.…

RTC技術

什么是RTC RTC&#xff08;Real time communication&#xff09;實時通信&#xff0c;是實時音視頻的一個簡稱&#xff0c;我們常說的RTC技術一般指的是WebRTC技術&#xff0c;已經被 W3C 和 IETF 發布為正式標準。由于幾乎所有主流瀏覽器都支持 WebRTC 標準 API &#xff0c;…

vue+cesium示例:3Dtiles三維模型高度調整(附源碼下載)

接到一位知識星友的邀請&#xff0c;實現他需要3Dtiles三維模型的簡單高度調整需求&#xff0c;適合學習Cesium與前端框架結合開發3D可視化項目。 demo源碼運行環境以及配置 運行環境&#xff1a;依賴Node安裝環境&#xff0c;demo本地Node版本:推薦v18。 運行工具&#xff1a;…

詳解3DGS

4 可微分的3D高斯 splatting 核心目標與表示選擇 我們的目標是從無法線的稀疏SfM點出發&#xff0c;優化出一種能夠實現高質量新視角合成的場景表示。為此&#xff0c;我們選擇3D高斯作為基本圖元&#xff0c;它兼具可微分的體表示特性和非結構化的顯式表示優勢&#xff0c;既…

構建版本沒mac上傳APP方法

在蘋果開發者的app store connect上架Ios應用的時候&#xff0c;發現需要使用xode等軟件來上傳iOS的APP。 但是不管是xcode也好&#xff0c;transporter也好&#xff0c;還是命令行工具也好&#xff0c;都必須安裝在mac電腦才能使用&#xff0c;。 假如沒有mac電腦&#xff0…

Gitee PPM:智能化項目管理如何重塑軟件工廠的未來格局

在數字化轉型浪潮席卷全球的當下&#xff0c;軟件開發行業正經歷著前所未有的變革。隨著企業項目復雜度呈指數級增長&#xff0c;傳統項目管理方式已難以應對多項目并行、跨團隊協作等挑戰。Gitee項目組合管理&#xff08;PPM&#xff09;作為新一代智能化項目管理解決方案&…

node入門:安裝和npm使用

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、安裝npm命令nvm 前言 因為學習vue接觸的&#xff0c;一直以為node是和vue綁定的&#xff0c;還以為vue跑起來必須要node&#xff0c;后續發現并不是。 看…

單例模式,餓漢式,懶漢式,在java和spring中的體現

目錄 餓漢式單例模式 懶漢式單例模式 Spring中的單例模式 關鍵差異對比 在Java和Spring中的應用場景 手寫案例 單例模式是一種創建型設計模式&#xff0c;其核心在于確保一個類僅有一個實例&#xff0c;并提供一個全局訪問點來獲取該實例。下面將詳細介紹餓漢式和懶漢式…