chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux定時(shí)任務(wù)如何判斷文件差異?

Q4MP_gh_c472c21 ? 來源:寫個(gè)解 ? 作者:吳解君 ? 2021-03-17 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文能學(xué)到?busybox為例粗略跟蹤軟件執(zhí)行過程方法?如何判斷文件差異?cron 對(duì)任務(wù)計(jì)劃文件要求

1. 背景

無意中瞟一眼出廠產(chǎn)品的日志文件 /app/recode 大小居然有9MB,按照設(shè)計(jì)每10min執(zhí)行任務(wù)檢查/app/recode文件大小,該文件不會(huì)超過4MB,超過此大小則壓縮處理,僅保留最近的日志內(nèi)容。立馬著手檢查linux定時(shí)任務(wù)cron運(yùn)行情況。

2. 初步排查

執(zhí) crontab -e 查看定時(shí)任務(wù)配置情況,其實(shí)是以root權(quán)限打開 var/spool/cron/crontabs/root 文件,第二行是本背景該執(zhí)行的腳本,乍看一下沒有任何問題。檢查 /var/log/message 看是否有被執(zhí)行的記錄,“cat /var/log/message | grep cron”,干干凈凈?。?!的確沒被執(zhí)行。

本來事情到此為止只算工程師一個(gè)平常無奇的日常,不過10min后再查看 /app/recode 居然從9MB變成4KB,/var/log/message也有執(zhí)行記錄,發(fā)生了什么?

3. 分析

為了分析具體原因,準(zhǔn)備一新燒錄的板卡作為排查對(duì)象。懷疑方向有三個(gè),這三方面都是引起任務(wù)計(jì)劃不被執(zhí)行的誘因:crontab file格式不正確

文件系統(tǒng)被改寫

crontab file所屬用戶不合法

3.1. x11 crontab file 格式不正確

crontab file文件位于 var/spool/cron/crontabs/root,當(dāng)使用crontab -e命令打開該文件,不做任何修改并退出,cron任務(wù)計(jì)劃能被運(yùn)行。懷疑var/spool/cron/crontabs/root文件里可能包含不合法字符或語法不正確,如:文件末尾有 、 、一行里有多個(gè)空格會(huì)影響cron解析該文件。于是執(zhí)行如下步驟排查:1.備份配置文件cp var/spool/cron/crontabs/root var/spool/cron/crontabs/root.bak;

2.執(zhí)行crontab -e;

3.cron任務(wù)計(jì)劃是否被執(zhí)行,需查看記錄watch -n 1 cat /var/log/message。

4.計(jì)算兩文件md5是否一致md5sum var/spool/cron/crontabs/root var/spool/cron/crontabs/root.bak;

結(jié)果:文件一致。

證明:“crontab file 格式不正確”不是誘因。

3.2. x12 文件系統(tǒng)被改寫

crontab -e雖然沒有修改var/spool/cron/crontabs/root,但無法證明它有沒有改寫文件系統(tǒng)其他文件。于是在一塊重新燒錄鏡像的板卡執(zhí)行如下步驟排查:獲取文件系統(tǒng)所有文件的MD5保存為/tmp/a.txt;

find arch bin etc home lib media opt root sbin tmp usr var -name “*” | xargs md5sum 》 /unuse/a.txt

執(zhí)行crontab -e;

獲取文件系統(tǒng)所有文件的MD5保存為/tmp/b.txt;

find arch bin etc home lib media opt root sbin tmp usr var -name “*” | xargs md5sum 》 /unuse/b.txt比較a.txt和b.txt是否一致,從而證明crontab -e是否修改文件系統(tǒng)內(nèi)容

結(jié)果:a.txt,b.txt文件一致。 證明:“x12 文件系統(tǒng)被改寫”不是誘因。

3.3. x13 crontab file所屬用戶不合法

產(chǎn)品的cron是busybox的組件,源碼面前無秘密。開始跟蹤crond執(zhí)行過程。 在busybox源碼的miscutils/crond.c添加若干 “printf(”LINE %d“, __ LINE __);”跟蹤程序運(yùn)行。cron在前臺(tái)運(yùn)行,執(zhí)行crond -f var/spool/cron/crontabs/root; 發(fā)現(xiàn)947行沒有被執(zhí)行,且文件指針是0;推斷:var/spool/cron/crontabs/root沒有被讀取。

跟蹤文件讀取函數(shù)load_crontab發(fā)現(xiàn)438行的if第二個(gè)條件不滿足,DEAMON_UID是0,只有當(dāng)sbuf.st_uid也等于0時(shí)才能執(zhí)行文件讀取,實(shí)際返回1000。變量sbuf.st_uid表示文件所屬用戶的UID。

?修改crontab file文件的UID和GID都是0,chown 0:0 /var/spool/cron/crontabs/root;

?重新啟動(dòng)crond:crond -f var/spool/cron/crontabs/

?10min后在/var/log/message里看到任務(wù)計(jì)劃執(zhí)行痕跡

Jan 10 1200 (none) cron.info crond[854]: USER root pid 3506 cmd /usr/bin/compresslog.shJan 10 1200 (none) cron.info crond[854]: USER root pid 3508 cmd /usr/local/bin/recode_check.shJan 10 1200 (none) cron.info crond[854]: USER root pid 5007 cmd /usr/local/bin/recode_check.shJan 10 1200 (none) cron.info crond[854]: USER root pid 6506 cmd /usr/local/bin/recode_check.sh結(jié)果:修改“crontab file所屬用戶”有效,任務(wù)計(jì)劃可以正常運(yùn)行。 證明:“crontab file所屬用戶不合法”是誘因

4. 推斷過程

看到這個(gè)1000我已經(jīng)覺察到問題根本原因,看我娓娓道來。/etc/passwd記錄linux用戶所屬UID、GID。UID=0、GID=0屬于root用戶。passwd有若干ID號(hào),普通預(yù)設(shè)的用戶的UID、GID在1~999,adduser創(chuàng)建的用戶ID從1000開始,啟動(dòng)crond守護(hù)進(jìn)程時(shí)會(huì)根據(jù)當(dāng)前用名去/var/spool/cron/crontabs/目錄下尋找與用戶名同名的文件,順帶檢查該文件的所屬用戶UID,只有文件存在、UID相同才讀取該文件。按照設(shè)想,那么crontab -e執(zhí)行后應(yīng)該會(huì)修改用戶所屬ID,下面是實(shí)驗(yàn)步驟。再修改用戶組為 1000 “chown 1000:root /var/spool/cron/crontabs/root”

觀察crontab -e執(zhí)行前后文件所屬用戶是否改變

實(shí)踐和設(shè)想一致:crontab會(huì)修改文件所屬用戶。

5. 為什么測(cè)試階段沒發(fā)現(xiàn)問題

我的Linux系統(tǒng)開發(fā)環(huán)境普通用戶編碼從1000開始,為避免使用root用戶誤操作危害開發(fā)環(huán)境,一切文件均在普通用戶環(huán)境下編輯,為有編輯權(quán)限,曾執(zhí)行過 chown up /var/spool/cron/crontabs/root(不理解cron設(shè)計(jì)者為什么要去檢查文件所屬UID,即使當(dāng)前已經(jīng)是root權(quán)限),這個(gè)up就是我的用戶名,up的UID=1000。之所以在軟件測(cè)試階段未發(fā)現(xiàn)問題,原因在于任務(wù)計(jì)劃默認(rèn)10min才執(zhí)行一次,為縮短測(cè)試時(shí)間而修改任務(wù)計(jì)劃執(zhí)行頻率,提高測(cè)試效率,修改方法就是crontab -e編輯 /var/spool/cron/crontabs/root。 當(dāng)初只注重recode_check.sh執(zhí)行的正確性。

原文標(biāo)題:揪出元兇:linux定時(shí)任務(wù)crontab居然沒執(zhí)行

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11576

    瀏覽量

    216650
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72233

原文標(biāo)題:揪出元兇:linux定時(shí)任務(wù)crontab居然沒執(zhí)行

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Crontab定時(shí)任務(wù)完全指南

    在凌晨3點(diǎn),當(dāng)大多數(shù)人還在熟睡時(shí),一位運(yùn)維工程師的手機(jī)突然響起——線上數(shù)據(jù)庫備份失敗了。他匆忙起床,打開電腦,手動(dòng)執(zhí)行備份腳本,整個(gè)過程耗時(shí)2小時(shí)。這樣的場(chǎng)景,在我剛?cè)胄袝r(shí)經(jīng)常遇到。直到我真正掌握了crontab定時(shí)任務(wù),才徹底擺脫了"人肉運(yùn)維"的窘境。
    的頭像 發(fā)表于 09-05 10:03 ?376次閱讀

    使用C#實(shí)現(xiàn)西門子PLC數(shù)據(jù)定時(shí)讀取保存

    在平時(shí)開發(fā)中,我們時(shí)常會(huì)遇到需要后臺(tái)靜默運(yùn)行的應(yīng)用場(chǎng)景,這些程序不需要用戶的直接操作或界面展示,而是專注于定時(shí)任務(wù)的執(zhí)行。比如說,我們需要定期從西門子PLC(可編程邏輯控制器)中讀取數(shù)據(jù)并進(jìn)行保存,以便后續(xù)分析使用。
    的頭像 發(fā)表于 08-07 16:17 ?1825次閱讀
    使用C#實(shí)現(xiàn)西門子PLC數(shù)據(jù)<b class='flag-5'>定時(shí)</b>讀取保存

    Linux三大主流文件系統(tǒng)解析

    還在為選擇哪個(gè)文件系統(tǒng)而糾結(jié)?作為一名摸爬滾打多年的運(yùn)維老鳥,我將用最接地氣的方式,帶你徹底搞懂 Linux 三大主流文件系統(tǒng)的奧秘。
    的頭像 發(fā)表于 08-05 17:37 ?864次閱讀

    一文讀懂:嵌入式Linux實(shí)時(shí)性進(jìn)階

    強(qiáng)實(shí)時(shí)的微內(nèi)核,它與Linux內(nèi)核共同運(yùn)行于硬件平臺(tái)上。 實(shí)時(shí)內(nèi)核的優(yōu)先級(jí)高于Linux內(nèi)核,負(fù)責(zé)處理系統(tǒng)的實(shí)時(shí)任務(wù),而Linux則負(fù)責(zé)處理非實(shí)
    發(fā)表于 07-10 15:26

    配置文件差異介紹

    配置文件差異 FA模型應(yīng)用在config.json文件中描述應(yīng)用的基本信息,一個(gè)應(yīng)用工程中可以創(chuàng)建多個(gè)Module,每個(gè)Module中都有一份config.json文件。confi
    發(fā)表于 06-05 06:50

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統(tǒng)中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務(wù),如管理文件和目錄、操作進(jìn)程、網(wǎng)絡(luò)通信、軟件安裝等。
    的頭像 發(fā)表于 05-03 18:08 ?1418次閱讀

    linux服務(wù)器挖礦病毒處理方案

    情況說明:挖礦進(jìn)程被隱藏(CPU占用50%,htop/top卻看不到異常進(jìn)程),結(jié)束挖礦進(jìn)程后馬上又會(huì)運(yùn)行起來(crontab -l查看發(fā)現(xiàn)沒有定時(shí)任務(wù))。
    的頭像 發(fā)表于 04-09 10:33 ?776次閱讀
    <b class='flag-5'>linux</b>服務(wù)器挖礦病毒處理方案

    【第四章 定時(shí)任務(wù)】手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云

    【第四章 定時(shí)任務(wù)】手把手教你玩轉(zhuǎn)新版正點(diǎn)原子云 承接上篇,除了報(bào)警聯(lián)動(dòng)這個(gè)功能,原子云還有一個(gè)特色功能也是各開發(fā)者喜歡用的,定時(shí)任務(wù)功能。 【正點(diǎn)原子】云平臺(tái):原子云(點(diǎn)擊登錄原子云) 前言
    發(fā)表于 03-13 10:19

    Linux計(jì)劃任務(wù)cron詳解

    cron是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程,與windows下的計(jì)劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù) 工具,并且會(huì)自動(dòng)啟動(dòng)crond進(jìn)程,crond進(jìn)程每分鐘會(huì)定期檢查是否有要
    的頭像 發(fā)表于 02-07 15:31 ?1372次閱讀
    <b class='flag-5'>Linux</b>計(jì)劃<b class='flag-5'>任務(wù)</b>cron詳解

    Linux文件查找神器對(duì)決:Locate與find選誰

    linux 中有很多查找工具,今天主要講解locate,find兩個(gè)工具。 一、 locate 1、性能介紹 查詢系統(tǒng)上預(yù)建的文件索引 數(shù)據(jù)庫 /var/lib/mlocate/mlocate.db
    的頭像 發(fā)表于 12-18 14:00 ?784次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>查找神器對(duì)決:Locate與find選誰

    Linux文件查找

    Linux文件查找 1.find查找概述 為什么要有文件查找,因?yàn)楹芏鄷r(shí)候我們可能會(huì)忘了某個(gè)文件所在的位置,此時(shí)就需要通過find來查找。 find命令可以根據(jù)不同的條件來進(jìn)行查找
    的頭像 發(fā)表于 12-03 17:09 ?1076次閱讀

    Linux計(jì)劃任務(wù)介紹

    點(diǎn)定時(shí)備份數(shù)據(jù)。比如:11點(diǎn)開啟網(wǎng)站搶購接口,12點(diǎn)關(guān)閉網(wǎng)站搶購接口。 3.計(jì)劃任務(wù)主要分為以下兩種使用情況: 1.系統(tǒng)級(jí)別的定時(shí)任務(wù): 臨時(shí)文件清理、系統(tǒng)信息采集、日志
    的頭像 發(fā)表于 11-24 15:49 ?977次閱讀

    如何判斷Linux系統(tǒng)的位數(shù)

    給你一個(gè) Linux 系統(tǒng),如何判斷它的位數(shù)? 我經(jīng)常用的,有這么幾種方式。 第一個(gè),使用命令: uname -m。 uname命令在 Linux 中用于顯示與操作系統(tǒng)內(nèi)核相關(guān)的信息,加上 -m
    的頭像 發(fā)表于 11-24 10:28 ?932次閱讀

    定時(shí)器技術(shù):Air780E如何革新定時(shí)任務(wù)管理?

    今天講的是關(guān)于Air780E如何革新定時(shí)任務(wù)管理的內(nèi)容,希望大家有所收獲。
    的頭像 發(fā)表于 11-07 13:50 ?1040次閱讀
    <b class='flag-5'>定時(shí)</b>器技術(shù):Air780E如何革新<b class='flag-5'>定時(shí)任務(wù)</b>管理?

    mysql定時(shí)備份任務(wù)

    在生產(chǎn)環(huán)境上,為了避免數(shù)據(jù)的丟失,通常情況下都會(huì)定時(shí)的對(duì)數(shù)據(jù)庫進(jìn)行備份。而Linux的crontab指令則可以幫助我們實(shí)現(xiàn)對(duì)數(shù)據(jù)庫定時(shí)進(jìn)行備份。首先我們來簡(jiǎn)單了解crontab指令,如果你會(huì)了請(qǐng)?zhí)较乱粋€(gè)內(nèi)容mysql備份。
    的頭像 發(fā)表于 10-31 10:07 ?748次閱讀