Alan's BLOG
  • archives
  • posts
  • tags
  • about
  • quote
  • search
Home » Tags

linux

Linux 定時任務[crontab]

👨‍💻簡介 什麼是crontab Crontab 是一個 Unix 系統下的定時任務管理工具。它允許用戶自動在特定時間執行指令或程式,而無需人工干預。Crontab 文件中的每一行都代表一個定時任務,其中指定了任務執行的時間,以及要執行的指令或程式。 crontab用在哪 適用於週期性的任務,例如每天定時備份檔案,或者每周定時發送報表等等。使用 Crontab 可以大大簡化這些任務的管理,避免因人為錯誤而導致的問題。 語法 crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ] 選項 參數 說明 -e UserName 編輯crontab -l UserName 顯示當前用戶的crontab -r UserName 移除當前用戶的crontab -v UserName 顯示當前用戶的cron jobs狀態 格式 # ┌───────────── 分鐘 (0 - 59) # │ ┌─────────── 小時 (0 - 23) # │ │ ┌───────── 日 (1 - 31) # │ │ │ ┌─────── 月 (1 - 12) # │ │ │ │ ┌───── 星期幾 (0 - 7,0 是週日,6 是週六,7 也是週日) # │ │ │ │ │ # * * * * * /path/to/command 範例 查看自己的crontab crontab -l 查看指定用戶的crontab sudo crontab -u alan -l 編輯crontab crontab -e 編輯指定用戶的crontab sudo crontab -u alan -e 刪除crontab crontab -r 擴展 參數 說明 crontab格式 @reboot 每次重開機執行一次 @yearly 每年執行一次 0 0 1 1 * @annualy 每年執行一次 0 0 1 1 * @monthly 每月執行一次 0 0 1 * * @weekly 每週執行一次 0 0 * * 0 @daily 每天執行一次 0 0 * * * @hourly 每小時執行一次 0 * * * * 限制特定用戶執行crontab 使用場景:系統安全性考量 使用到的檔案 /etc/cron....

2023-02-09 · 2 min · 217 words · Alan

Linux 顯示用戶資訊[id]

👨‍💻簡介 id 用途:顯示用戶的ID,以及所屬群組的ID。 語法 id [OPTIONS] userName 參數 參數 說明 -Z, –context 顯示當前用戶的安全上下文 -g, –group 顯示所屬群組ID -G, –groups 顯示所有群組ID -n, –name 顯示用戶 -r, –real 顯示實際ID -u, –user 顯示用戶ID 基本操作 顯示當前用戶訊息 id # output uid=1000(alan) gid=1000(alan) groups=1000(alan),996(vboxsf) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 顯示用戶群組id id -g # output 1000 顯示指定用戶訊息 id root

2022-12-02 · 1 min · 46 words · Alan

Linux 修改密碼[passwd]

👨‍💻簡介 passwd 用途:修改使用者密碼 語法 passwd [OPTIONS] username 參數 參數 說明 -k, –keep-tokens 保留未過期的驗證 token -d, –delete 刪除 named 帳號的密碼 (只有 root 可執行) -l, –lock 鎖住 named 帳號的密碼 (只有 root 可執行) -u, –unlock 解開 named 帳號的密碼鎖定 (只有 root 可執行) -e, –expire 讓 named 帳號的密碼過期 (只有 root 可執行) -f, –force 強制作業 -x, –maximum=DAYS 最大密碼有效期限 (只有 root 可執行) -n, –minimum=DAYS 最小密碼有效期限 (只有 root 可執行) -w, –warning=DAYS 用戶在密碼過期前收到警告的天數 (只有root可執行) -i, –inactive=DAYS 帳號在密碼過期後即將被停用前的天數 (只有root可執行) -S, –status 回報 named 帳號上的密碼狀態 (只有 root 可執行) –stdin 由 stdin 讀取新的 token (只有 root 可執行) 基本操作 修改使用者密碼 passwd myuser 顯示使用者密碼狀態 passwd -S myuser # output myuser PS 2021-11-26 0 99999 7 -1 欄位 範例 帳號名稱 myuser 密碼狀態,狀態包含鎖定密碼(LK)、無密碼(NP)與可用密碼(PS) PS 上次修改密碼時間 2021-11-26 密碼最短使用期限,單位為天 0 密碼最長使用期限,單位為天 99999 密碼過期前警告期間,單位為天 7 密碼過期後可使用的期間,單位為天 -1 刪除使用者密碼 passwd -d myuser 讓密碼過期,強制使用者更新密碼 passwd -e myuser # 下次登入時,就會跳出通知說要更改密碼 You are required to change your password immediately (root enforced) WARNING: Your password has expired....

2022-11-15 · 2 min · 214 words · Alan

Linux 修改時間[timedatectl]

👨‍💻簡介 timedatectl 用途:修改系統時間 語法 timedatectl [OPTIONS] command 參數 參數 說明 –no-pager 不將程序的輸出內容管道(pipe)給分頁程序 –no-ask-password 在執行特權操作時不向用戶索要密碼。 -H –host=[USER@]HOST 操作指定的遠程主機 -M –machine=CONTAINER 在本地容器內執行操作。 必須明確指定容器的名稱。 –adjust-system-clock 當使用set-local-rtc命令時,若使用了此選項,則表示根據RTC時間來更新系統時鐘。若未使用此選項,則表示根據系統時鐘來更新RTC時間 指令 指令 說明 status 顯示系統時鐘與RTC的當前狀態, 包括時區設置與網絡時間同步服務的狀態。 set-time TIME 將系統時鐘設爲指定的時間, 並同時更新RTC時間。 [TIME] 是一個形如 “2012-10-30 18:17:16"的時間字符串。 set-timezone ZONE 設置系統時區,也就是更新 /etc/localtime 軟連接的指向。 可以用下面的 list-timezones命令列出所有可用時區。 如果RTC被設爲本地時間, 此命令還會同時更新RTC時間。 list-timezones 列出所有可用時區,每行一個。 列出的值可以用作前述 set-timezone 命令的參數。 set-local-rtc BOOL 設爲 “no” 表示在RTC中存儲UTC時間; 設爲 “yes” 表示在RTC中存儲本地時間。應該盡一切可能在RTC中存儲UTC時間 set-ntp BOOL 是否開啓網絡時間同步。 設爲 “yes” 則啓用並啓動 systemd-timesyncd.service 服務, 設爲"no” 則停止並停用它 基本操作 顯示當前系統時間 timedatectl or timedatectl status 開啟網路時間同步服務 timedatectl set-ntp true 設定日期與時間 # 改時間和日期 timedatectl set-time "2021-11-01 10:10:00" # 只改日期 timedatectl set-time "2021-11-01" timedatectl set-time 20211101 # 只改時間 timedatectl set-time "10:10:00" timedatectl set-time 10:10:00 檢查時區 timedatectl list-timezones # 根據地理位置查看時區 timedatectl list-timezones | grep "Asia/B....

2022-11-10 · 1 min · 144 words · Alan

Linux 修改字串[sed]

👨‍💻簡介 sed(stream editor) 用途:用於處理文件,字串取代、複製、刪除等功能,進行處理時並不會改變當前的檔案,而是將處理過程存放在[模式空間]的緩衝區,結束目前的指令後輸出,接著再處理下一個指令直到結束 語法 sed [OPTIONS] script or inputfile 參數(常用) 參數 說明 -n, –quiet, –silent 沈默模式 -e script, –expression=script 直接在命令模式設定好script來進行編輯 -f script檔案, –file=script檔案 使用指定的script檔案來進行編輯 -i 修改檔案,常用於自動化腳本 動作 說明 a 新增,在指定的行數的「下一行」插入字串。未指定行數的話則是在「每一行」之後插入字串 c 取代,替換指定行數為預替換的字串 d 刪除,刪除指定的行。常與-i選項搭配,用來修改檔案時移除不需要的行 i 插入,與a相同,差別在於a指令是在指定行數之後插入,i是在指定行數之前插入 p 列印,通常搭配-n選項做使用,只列印出受影響的行數 s 取代,支持正則表達式,用來取代字串 flags 說明 [0-9] 數字表示只搜尋或者取代第 N 個數字所指示的那個樣板字串 g 全部取代 I 忽略大小寫 w 把符合的結果寫入檔案。和加了 -n 選項搭配 p 旗標的結果一樣。此旗標如果有和其它旗標搭配使用,必須放在最後面 基本操作 參數 搭配文件sed.txt I have a pen, I have an apple Ah Apple pen I have a pen, I have pineapple Ah Pineapple pen Apple pen Pineapple pen Ah Pen Pie Pineapple Apple Pen Pen Pie Pineapple Apple Pen 使用-n沈默模式 # 使用s取代每一行第一次出現的have修改成had sed -n 's/have/had/1p' sed....

2022-11-09 · 2 min · 252 words · Alan

Linux 篩選字串[grep]

👨‍💻簡介 grep 用途:查找文件內符合條件的字符串 語法 grep [-abcEFGhHilLnqrsvVwxy][-A<顯示行數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本文件>][--help][範本樣式][文件或目錄...] 參數 正規表示式選項 說明 -E, –extended-regexp 使用擴展正則表達式 -F, –fixed-strings 將樣式視為固定字符串的列表 -G, –basic-regexp 將樣式視為普通的表示法來使用 -P, –perl-regexp 將樣式視為perl的表示法來使用 -e, –regexp=PATTERN 指定字符串做為查找文件內容的樣式 -f, –file=FILE 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式 -i, –ignore-case 忽略大小寫的差異 -w, –word-regexp 只匹配整個單詞,而不是字符串的一部分 -x, –line-regexp 只顯示全列符合的列 -z, –null-data 設定資料列結尾為空白位元組,非換列符號 -s, –no-messages 不顯示不存在或無匹配文本的錯誤信息 -v, –invert-match 將匹配的資料排除 參數 說明 -m, –max-count=NUM 在達到 NUM 符合項目後停止 -b, –byte-offset 在顯示符合樣式的那一行之前,標示出該行第一個字符的編號 -n, –line-number 標示匹配文字的行號 –line-buffered 輸出每列後清除輸出 -H, –with-filename 印出每個符合項目的檔名 -h, –no-filename 查詢多文件時不顯示文件名 –label=LABEL 以 LABEL 作標準輸入的檔名前綴 -o, –only-matching 只顯示每列中符合 PATTERN 的部分 -q, –quiet, –silent 不顯示任何信息 –binary-files=TYPE 設定二進制檔案為 TYPE 的檔案;TYPE 為 “binary”、“text” 或 “without-match” -a, –text 不要忽略二進制的數據 -I 不匹配二進制的東西 -d, –directories=ACTION 目錄操作的動作,讀取、遞歸、跳過 -D, –devices=ACTION 設置對設備的動作,FIFO和管道的操作,動作有,讀取、跳過 -r, –recursive 在指定目錄與其子目錄下所有的檔案中,搜尋指定的關鍵字 -R, –dereference-recursive 與-r相同,但遵循軟連結 –include=FILE_PATTERN 從特定的檔案中尋找關鍵字 –exclude=FILE_PATTERN 跳過匹配FILE_PATTERN 的文件和目錄 –exclude-from=FILE 跳過所有除FILE 以外的文件 –exclude-dir=PATTERN 跳過匹配PATTERN 的目錄 -L, –files-without-match 列出不匹配的文件名 -l, –files-with-matches 只列出匹配的文件名 -c, –count 只輸出匹配行的計數 -Z, –null 在搜尋的字串後面印出空字符 內容控制 說明 -B, –before-context=NUM 顯示前幾行 -A, –after-context=NUM 顯示後幾行 -C, –context=NUM, -NUM 顯示前後各幾行 –group-separator=SEP 使用A、-B或-C時,在組之間打印SEP而不是–線 –no-group-separator 使用A、-B或-C時,在組之間不打印seperator –color[=WHEN],–colour[=WHEN] 使用顏色標示的方式,將成功匹配的部分文字標示出來,方便使用者閱讀。顏色標示功能可以透過 --color=never、--color=always、--color=auto 這幾種參數來關閉、開啟或設為自動 -U, –binary 使用標誌高亮匹配字串 -u, –unix-byte-offsets 使用標誌高亮匹配字串 基本操作 指定文件查詢關鍵字 # 在file這個文件裡尋找test關鍵字 grep test file 透過匹配方式搜尋 # 在/etc/目錄下所有....

2022-11-09 · 2 min · 257 words · Alan

Linux 同步檔案[rsync]

👨‍💻簡介 rsync 用途:用來複製與備份檔案的工具,它可以處理本機或遠端的檔案同步工作 語法 rsync [OPTIONS] src [dest/user@host:dest] 參數 參數 說明 -v, –verbose verbose 模式,輸出比較詳細的訊息 -r, –recursive 遞迴(recursive)備份所有子目錄下的目錄與檔案 -a, –archive 封裝備份模式,相當於 -rlptgoD,遞迴備份所有子目錄下的目錄與檔案,保留連結檔、檔案的擁有者、群組、權限以及時間戳記 -z, –compress 啟用壓縮,可減少網路傳輸資料量 -h, –human-readable 將數字以比較容易閱讀的格式輸出 -q, –quiet 與 -v 相反,安靜模式,略過正常資訊,僅顯示錯誤訊息 -l, –links 複製連結而不是連結內容 -g, –group 保留檔案的原始群組狀態(權限不足則無法繼承) -o, –owner 保留檔案的原始擁有者(權限不足則無法繼承) -t,–times 保留檔案的原始時間參數 -e 使用的通道協定,例如使用 ssh 通道,則 -e ssh -u, –update 在備份時會略過所有已經存在於目的端,且文件時間比要備份的檔案為新的檔案 -p, –perms 表示要保留檔案的權限資訊 -D 表示要保留設備檔案資訊 –delete 刪除來源端已經不存在但在目的端存在的檔案 –force 當目的端的目錄被覆蓋時,就強制先刪除該目錄 –bwlimit=RATE 限制資料傳輸速度上限 –progress 即時顯示傳輸進度 –exclude=PATTERN 排除符合匹配的檔案 –include=PATTERN 只備份符合匹配的檔案 –min-size=SIZE 指定備份檔案的最小值 –max-size=SIZE 指定備份檔案的最大值 –remove-source-files 自動刪除來源檔案 -n, –dry-run debug模式,測試rsync餐數 –existing 只更新既有的檔案,排除新增的檔案 -i, –itemize-changes 查看個別檔案的變動資訊 基本操作 複製本地端檔案或目錄 rsync -avh mylog....

2022-11-08 · 2 min · 224 words · Alan

Linux 查找文件[find]

👨‍💻簡介 find 用途:在目錄中找尋文件 語法 find path [OPTIONS] 參數(常用) 參數 說明 -mount, -xdev 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件 -amin n 指定檔案的最後存取時間,單位為分鐘,在過去n分鐘內被存取過 -anewer file 比文件file更晚被存取過的文件 -atime n 指定檔案的最後存取時間(access time),單位為天 -cmin n 指定檔案狀態相關資訊最後修改的時間,單位為分鐘 -cnewer file 比文件file更新的文件 -ctime n 指定檔案狀態相關資訊最後修改的時間(status time),單位為天 -mtime n 指定檔案的最後修改時間(modification time),單位為天 -mmin n 指定檔案的最後修改時間,單位為分鐘 -empty 搜尋空檔案 -ipath p, -path p 路徑名稱符合 p 的文件,ipath 會忽略大小寫 -name name, -iname name 文件名稱符合 name 的文件。 iname 會忽略大小寫 -size n 指定檔案的大小 -type c 指定檔案的類型 -perm 指定檔案的權限 -user 指定檔案擁有者 -group 指定檔案的群組 -exec 對使用find的搜尋結果執行特定指令 基本操作 指定檔名搜尋 # 搜尋在當前目錄底下,檔名為file....

2022-11-07 · 2 min · 314 words · Alan

Linux 日誌管理[logrotate]

👨‍💻簡介 logrotate 用途:日誌文件管理工具,用於切割日誌,壓縮轉存,刪除舊的日誌文件,並創建新的日誌文件 預設配置文件位置: /etc/logrotate.conf /etc/logrotate.d 運行機制 logrotate是透過cron來運行的,透過/etc/cron.daily/logrotate這腳本,如要查看cron.daily運行方式,可查看/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_DELAY=45 # the jobs will be started during the following hours only START_HOURS_RANGE=3-22 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron....

2022-11-03 · 2 min · 382 words · Alan

Linux 擷取部分字元[cut]

👨‍💻簡介 cut 用途:文字處理工具,可以將每一行文字的部分字元或是欄位擷取出來 語法 cut [OPTIONS] FILE 參數 參數 說明 -b, –bytes=LIST 擷取指定的範圍,以 bytes 作為單位 -c, –characters=LIST 擷取指定的範圍,以字元數量作為單位 -d, –delimiter=DELIM 指定分隔字元,預設是用 tab 作為分隔 -f, –fields=LIST 輸出指定的範圍,這個是每行資料的第幾個欄位作為區分 -n with -b: don’t split multibyte characters –complement 排除未擷取的欄位 -s, –only-delimited 如果該行沒有分隔字元,不會顯示該行資料 –output-delimiter=字串 改變輸出欄位的分隔字元 基本操作 擷取字元 # 擷取從第二個字元到最後 cut -c 2- file # 擷取從開始到第二個字元 cut -c -2 file # 擷取第2-3,5-8,10-12個字元 cut -c 2-3,5-8,10-12 file 排除字元 # 排除2-5字元,其餘都擷取 cut -c 2-5 --complement 擷取欄位 # 將逗號當作分隔符,擷取第二個欄位 cut -d , -f 2 file # 將逗號當作分隔符,擷取第1-3個欄位以及第五個欄位 cut -d , -f 1-3,5 file 排除欄位 # 排除第二個欄位,擷取剩餘的欄位 cut -d , -f 2 --complement file 改變輸出欄位分隔字元 # 將逗號當作分隔符,擷取第1,3欄位並將分隔符從,改成: cut -d , -f 1,3 --output-delimiter=":" 組合技 # 找出所有python程式的PID與指令內容 ps aux | grep python | sed 's/\s\+/ /g' | cut -d ' ' -f 2,11- 參考資料 Linux 的 cut 擷取部份字元、欄位指令教學與常用範例整理 - G....

2022-11-03 · 1 min · 145 words · Alan
Next  »
© 2024 艾倫的程式之旅 Powered by Hugo & PaperMod