發表文章

目前顯示的是有「程式語言」標籤的文章

Linux FAQ : 如何更改檔案 權限

  Linux FAQ : 如何更改檔案 權限 參考 :  https://superuser.com/questions/648163/recursively-chown-all-files-that-are-owned-by-a-specific-user 更改檔案 # chmod permission_number file # example : chmod 775 abc.txt # change file owner or group # chown owner file # example : chown berry abc.txt # chgrp group file # example : chgrp apple abc.txt # chown owner.group file # example : chown berry.apple abc.txt 大量調整檔案 find . -type d -iname '???' -user old_user -exec chown -R new_user:new_group {} \\; 測試情境 find . -type d -iname 'zh_TW' -user tiptop -exec chown -R tiptop:tiptop {} \\; 簡介 : 找出目錄名稱為 zh_TW 用戶為 tiptop 執行更改此目錄全部檔案 用戶 tiptop 群組 tiptop

Linux FAQ : 系統重啟時間分析

圖片
  系統重啟時間分析 How long is system boot spend  ?  參考 : Time it takes to reboot a Linux server Is there a way to see the execution tree of systemd? systemd-analyze ( 大略需要時間 ) 啟動 systemd 後上次啟動花費了多少時間。 這沒有考慮 BIOS/硬件初始化或 GRUB 超時, 但對於實際的操作系統啟動時間應該是準確的 systemd-analyze blame ( 解析 )

Linux FAQ : create or change user setting

圖片
  建立帳號與修改 參考 : https://www.golinuxcloud.com/check-last-password-change-expiration-linux/ 密碼 換密碼 passwd root : passwd 帳號 查看密碼最後調整日期 chage -l 帳號 密碼複雜度 https://www.2daygeek.com/how-to-set-password-complexity-policy-on-linux/ 批次修改用戶 密碼 chpasswd 參考 : https://www.cnblogs.com/souhaite/p/10585585.html echo 帳號:密碼 | chpasswd

Linux FAQ : 內存 排查 介紹

  內存 參考 : https://www.itread01.com/content/1547590715.html 簡介 : https://binaryterms.com/swapping-in-operating-system.html http://blog.is36.com/tag/linux/ linux在終端環境下可以使用 free 命令看到系統實際使用內存的情況, 一般用free -m方式查看內存佔用情況(兆為單位)。 而系統實際可用內存是不是free部分呢,不是的, 系統實際內存佔用以及可用內存有如下幾個加減法: used=total-free  即  total=used+free 實際內存佔用: used-buffers-cached  即  total-free-buffers-cached 實際可用內存: buffers+cached+free Linux 查看正在吃 swap 的程式 參考 : https://blog.longwin.com.tw/2017/02/linux-find-use-swap-process-2017/ https://www.cyberciti.biz/faq/linux-which-process-is-using-swap/ ps -eo vsz,rss,pid,args | 排序 -n 第一列是虛擬內存使用情況,也稱為交換,具體取決於您選擇的定義... #一行查看方式 for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file ; done | sort -k 2 -n -r | less #pmap pmap -x pid | tail -n 1 |awk '{print $5}'

Linux FAQ : iptables 介紹

  防火牆設定 iptables 參考 : ( https://www.cyberciti.biz/faq/linux-disable-firewall-command/) iptables 指令入門 - Linux 技術手札 Linux的iptables防火牆設定記事 iptables 的安裝與設定 iptables實用知識 ,一文學會配置linux防火牆 CentOS 7 關閉防火牆及 SELinux - Linux 技術手札 What can be the reasons of connection refused errors? https://www.quora.com/How-do-you-open-port-80-on-Linux iptables 可以設定主機 ip 白名單與黑名單 限制來源提升安全性 port 也可以做設定 查看 : iptables -L 規則 先後順序 : 先設定有優先級 範例 : 先開通 10.40.40.20 port 80 , 在封鎖 10.40.40.20 網段 10.40.40.20 port 80 還是可以通 先封鎖 10.40.40.20 網段 , 在開通 port 80 10.40.40.20 port 80 被擋住 設定 : 開啟 22 port : iptables -A INPUT -i ens192 -p tcp -s 10.40.53.191 --dport 22 -j ACCEPT 開通 測試可以直接輸入指令 不用重啟防火牆 process 沒有 pid 參考 : How to identify a process which has no pid? netstat -antlp | grep 45136 ss -apn|grep :111 netstat --program --numeric-hosts --numeric-ports --extend find -inum 152555007

Linux FAQ : crontab 介紹

圖片
  排程 crontab 簡介 參考 :  https://ubuntuqa.com/zh-tw/article/10392.html 設定一個定時啟動程序 簡介 情境 : 寫一支一直檢查 系統狀況程序 然後想設定 何時才檢查 那麼可以用 Linux 提供的設置 crontab 登入 用戶後 輸入 crontab -e ( 預設是 vi 編輯器 ) 開始編輯吧 常用 crontab -l 查看自己的 crontab crontab -u 名稱 -l 顯示特定使用者 crontab crontab -e 編輯 crontab crontab -u 名稱 -e 編輯特定使用者 crontab crontab -r 刪除全部的 crontab 範例 #every 3 minute run abc015 */3 * * * * . /u1/etc/chenv 2; sh abc015 >>/u1/123/app/4xx/abc015_log.log 2>&1 #日期寫log "/u1/123/app/4xx/ $(date +"\%Y\%m\%d") _abc015.log" 2>&1 #每小時執行程式 * */1 * * * . /u1/etc/chenv 2; sh abc022 >> "/u6/123/sync_tmp/abc022_log/ $(date +"\%Y\%m\%d") _abc022.log" 2>&1 注意事項 Linux 排程也不能設定太多 要根據系統負載 評估 主要是因為 Linux 啟動排程是呼叫 watch dog 來帶起程序 如太多 會在同一時間看到 有 一堆 watch dog 系統資源太低 很容易造成 整個 Linux 卡頓 watch dog 其他設定介紹 排程更新 ex - /var/spool/cron/root <<%% a */1 * * * * sh /u3/bin/abc.sh . wq! %% 排程執行目錄 登入 root 查看 /var/log/cron 搜尋想找的程序名稱 , 會看到幾點有運行 除了⼀般使⽤

Linux FAQ : 常見字串處理 介紹

  字串處理介紹 cut 取出部分字串 從一列取出一部分 cut -c2 dataf1 抽出 dataf1 每一列出現的 第 2 個字元 cut -c3-10 data1 抽出 data1 每一列 3 到 10 字元 cut -c9- data1 每一列 從 9 之後全部字元 cut -1-3,22 data1 每一列 1 到 3 字元 , 與 22 以後全部字元 cut -d: -f1 /etc/data1 找出 data1 第一欄位 , -d: 用 : 分隔符 , -f1 第一欄 cut -d: -f3,4 /etc/data1 找出 data1 第 3 和 4 欄位 sort 排序 sort data1 升冪 ( 由大到小 ) sort -r data1 降冪 ( 由小到大 ) sort -n data1 用數值比較 sort -n +2 data1 跳過前兩欄 用數值比較 sort -nr +2 -t: data1 -t: 用 : 分隔符號區分 wc 計算字串長度 wc wc -l dataf1 顯示檔案內共有幾列 wc -c file 顯示共有多少字元 wc -w file 顯示共有多少單字

Linux FAQ : 啟動異常 , 進入 emergency mode 維護模式修正

圖片
Linux FAQ :  啟動異常 , 進入 emergency mode 維護模式修正 emergency mode 維護模式 FAQ 啟動異常 , 進入維護模式修正 案例 1. pquota 寫成 pgouta 無法正常開機 搜尋看 journal 日誌 錯誤訊息 檢查看 /boot 如沒有 /boot 可以嘗試看 建立 mkdir /boot 查看 /boot mount 型態 : mount | grep boot 執行 : mount -t xfs /dev/sda1 /boot grep -r 'pguota' 發現是 /boot/grub2 檔案 grub.conf , grubenv 把 pguota 改成 pquota 接著存檔後重啟

Linux FAQ : 刪除各種檔案

圖片
  刪除各種檔案 參考 : https://blog.longwin.com.tw/2016/12/linux-delete-many-files-quick-2016/ https://kknews.cc/zh-tw/code/o38nvn5.html https://yonglhuang.com/rm-file/ https://www.baeldung.com/linux/delete-large-directory https://juejin.cn/post/6844903766366371854 https://www.firbug.com/a/202106/216584.html <檔案要清理 第一步先找出檔名> 檔案名稱有空格 範例 : azzi000 648116.tmp step 1 : find . -name '* *' step 2 : find . -name '* *' | awk -F / '{print "\""$2"\""}' step 3 : find . -name '* *' | awk -F / '{print "\""$2"\""}' | xargs rm -f <Linux 清理檔案沒釋放空間> 參考 : https://access.redhat.com/solutions/2316 https://unix.stackexchange.com/questions/68523/find-and-remove-large-files-that-are-open-but-have-been-deleted https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage 可以用 lsof 檢查已清理 程序卻卡住 process lsof | grep deleted

Linux FAQ : mount 掛載 iso 到主機

  參考 : https://richarlin.tw/blog/linux-mount/ https://unix.stackexchange.com/questions/30637/mount-error-is-not-a-block-device 何時會需要此指令 離線升級套件 磁碟區共享 有時要更新一些 套件 會用 yum 等指令 不過有時沒網路 或是 找不到更新包網站 這時可以用離線方式 離線需要準備 os 相關安裝光碟 把安裝光碟掛載到主機上 就可以使用 離線安裝套件 常用 mount 來源磁碟目錄 要掛載到哪一個目錄 轉移 mount 目錄 mount --bind <olddir> <mountpoint> 異常 錯誤 : mount error "is not a block device" mount error "is not a block device" mount 將包含文件系統的塊存儲設備附加到目錄,這不是您要嘗試執行的操作,因此會出現錯誤消息。您想要的是創建從新目錄名稱到舊現有名稱的鏈接 可以改使用 ln 或是 移轉 : mount --bind <olddir> <mountpoint> mount 與 ln 區別 如果需要目錄的用戶無法訪問它,或者磁盤不支持軟鏈接 掛載綁定很有用。綁定更強大,會更頻繁地工作。綁定工作是因為內核對應用程序“撒謊”,並告訴它一個目錄包含實際上在其他地方的內容。但是,除非您將綁定添加到/etc/fstab. 如果有疑問,我們 ln -s- 它更容易,更靈活,不需要 root,會告訴您實際目錄在哪裡等。您通常不需要綁定 mount hang 住 , 卡住 ... 等 會造成甚麼影響 df 卡住大多是掛載磁碟異常 ( mount ) 可以改使用 df -l ( 查看本地磁碟 ) 查看掛載磁碟 mount | column -t 參考 : https://www.gushiciku.cn/pl/pIst/zh-tw 取消掛載磁碟 umount 位置 umount /T100_gr umount -f /T100_gr

Linux FAQ : 給予顯示文字色彩

  Linux FAQ : 給予顯示文字色彩 參考 : https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux https://www.codegrepper.com/code-examples/shell/bash+echo+color You can use these  ANSI escape codes : Black 0;30 Dark Gray 1;30 Red 0;31 Light Red 1;31 Green 0;32 Light Green 1;32 Brown/Orange 0;33 Yellow 1;33 Blue 0;34 Light Blue 1;34 Purple 0;35 Light Purple 1;35 Cyan 0;36 Light Cyan 1;36 Light Gray 0;37 White 1;37 範例 : 方案 1 : shell script RED='\\033[0;31m' #設定改變色彩 NC='\\033[0m' # 還原用讓後面字詞不改變 echo -e "I ${RED}love${NC} Stack Overflow\\n" 方案 2 : echo -e "I \033[0;31mlove\033[0m Stack Overflow\n"