<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幾個(gè)必不可少的 Linux 運(yùn)維腳本!

          共 22172字,需瀏覽 45分鐘

           ·

          2022-10-28 05:44


          領(lǐng)取嵌入式學(xué)習(xí)路線,

          請(qǐng)加良許微信:coderliangxu-6

          鏈接:https://blog.csdn.net/lyshark_lyshark/article/details/125853245

          一、根據(jù)PID過(guò)濾進(jìn)程所有信息

          #! /bin/bash
          # Function: 根據(jù)用戶(hù)輸入的PID,過(guò)濾出該P(yáng)ID所有的信息
          read -p "請(qǐng)輸入要查詢(xún)的PID: " P
          n=`ps -aux| awk '$2~/^'$P'$/{print $11}'|wc -l`
          if [ $n -eq 0 ];then
           echo "該P(yáng)ID不存在!!"
           exit
          fi
          echo "--------------------------------"
          echo "進(jìn)程PID: $P"
          echo "進(jìn)程命令:`ps -aux| awk '$2~/^'$P'$/{print $11}'`"
          echo "進(jìn)程所屬用戶(hù): `ps -aux| awk '$2~/^'$P'$/{print $1}'`"
          echo "CPU占用率:`ps -aux| awk '$2~/^'$P'$/{print $3}'`%"
          echo "內(nèi)存占用率:`ps -aux| awk '$2~/^'$P'$/{print $4}'`%"
          echo "進(jìn)程開(kāi)始運(yùn)行的時(shí)刻:`ps -aux| awk '$2~/^'$P'$/{print $9}'`"
          echo "進(jìn)程運(yùn)行的時(shí)間:`ps -aux| awk '$2~/^'$P'$/{print $10}'`"
          echo "進(jìn)程狀態(tài):`ps -aux| awk '$2~/^'$P'$/{print $8}'`"
          echo "進(jìn)程虛擬內(nèi)存:`ps -aux| awk '$2~/^'$P'$/{print $5}'`"
          echo "進(jìn)程共享內(nèi)存:`ps -aux| awk '$2~/^'$P'$/{print $6}'`"
          echo "--------------------------------"

          二、根據(jù)進(jìn)程名過(guò)濾進(jìn)程信息

          會(huì)顯示出該進(jìn)程名包含的所有線程

          #! /bin/bash
          # Function: 根據(jù)輸入的程序的名字過(guò)濾出所對(duì)應(yīng)的PID,并顯示出詳細(xì)信息,如果有幾個(gè)PID,則全部顯示
          read -p "請(qǐng)輸入要查詢(xún)的進(jìn)程名:" NAME
          N=`ps -aux | grep $NAME | grep -v grep | wc -l` ##統(tǒng)計(jì)進(jìn)程總數(shù)
          if [ $N -le 0 ];then
            echo "該進(jìn)程名沒(méi)有運(yùn)行!"
          fi
          i=1
          while [ $N -gt 0 ]
          do
            echo "進(jìn)程PID: `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $2}'`"
            echo "進(jìn)程命令:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
            echo "進(jìn)程所屬用戶(hù): `ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $1}'`"
            echo "CPU占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $3}'`%"
            echo "內(nèi)存占用率:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $4}'`%"
            echo "進(jìn)程開(kāi)始運(yùn)行的時(shí)刻:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $9}'`"
            echo "進(jìn)程運(yùn)行的時(shí)間:` ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $11}'`"
            echo "進(jìn)程狀態(tài):`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $8}'`"
            echo "進(jìn)程虛擬內(nèi)存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $5}'`"
            echo "進(jìn)程共享內(nèi)存:`ps -aux | grep $NAME | grep -v grep | awk 'NR=='$i'{print $0}'| awk '{print $6}'`"
            echo "***************************************************************"
            let N-- i++
          done

          三、根據(jù)用戶(hù)名查詢(xún)?cè)撚脩?hù)的相關(guān)信息

          #! /bin/bash
          # Function:根據(jù)用戶(hù)名查詢(xún)?cè)撚脩?hù)的所有信息
          read -p "請(qǐng)輸入要查詢(xún)的用戶(hù)名:" A
          echo "------------------------------"
          n=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}' | wc -l`
          if [ $n -eq 0 ];then
          echo "該用戶(hù)不存在"
          echo "------------------------------"
          else
            echo "該用戶(hù)的用戶(hù)名:$A"
            echo "該用戶(hù)的UID:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $3}'`"
            echo "該用戶(hù)的組為:`id $A | awk {'print $3'}`"
            echo "該用戶(hù)的GID為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $4}'`"
            echo "該用戶(hù)的家目錄為:`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $6}'`"
            Login=`cat /etc/passwd | awk -F: '$1~/^'$A'$/{print}'|awk -F: '{print $7}'`
            if [ $Login == "/bin/bash" ];then
            echo "該用戶(hù)有登錄系統(tǒng)的權(quán)限!!"
            echo "------------------------------"
            elif [ $Login == "/sbin/nologin" ];then
            echo "該用戶(hù)沒(méi)有登錄系統(tǒng)的權(quán)限!!"
            echo "------------------------------"
            fi
          fi

          四、加固系統(tǒng)的一些配置

          #! /bin/bash
          # Function:對(duì)賬戶(hù)的密碼的一些加固
          read -p "設(shè)置密碼最多可多少天不修改:" A
          read -p "設(shè)置密碼修改之間最小的天數(shù):" B
          read -p "設(shè)置密碼最短的長(zhǎng)度:" C
          read -p "設(shè)置密碼失效前多少天通知用戶(hù):" D
          sed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defs
          sed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defs
          sed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defs
          sed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defs

          echo "已對(duì)密碼進(jìn)行加固,新用戶(hù)不得和舊密碼相同,且新密碼必須同時(shí)包含數(shù)字、小寫(xiě)字母,大寫(xiě)字母!!"
          sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1' /etc/pam.d/system-auth

          echo "已對(duì)密碼進(jìn)行加固,如果輸入錯(cuò)誤密碼超過(guò)3次,則鎖定賬戶(hù)!!"
          n=`cat /etc/pam.d/sshd | grep "auth required pam_tally2.so "|wc -l`
          if [ $n -eq 0 ];then
          sed -i '/%PAM-1.0/a\auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300' /etc/pam.d/sshd
          fi

          echo  "已設(shè)置禁止root用戶(hù)遠(yuǎn)程登錄!!"
          sed -i '/PermitRootLogin/c\PermitRootLogin no'  /etc/ssh/sshd_config

          read -p "設(shè)置歷史命令保存條數(shù):" E
          read -p "設(shè)置賬戶(hù)自動(dòng)注銷(xiāo)時(shí)間:" F
          sed -i '/^HISTSIZE/c\HISTSIZE='$E'' /etc/profile
          sed -i '/^HISTSIZE/a\TMOUT='$F'' /etc/profile

          echo "已設(shè)置只允許wheel組的用戶(hù)可以使用su命令切換到root用戶(hù)!"
          sed -i '/pam_wheel.so use_uid/c\auth required pam_wheel.so use_uid ' /etc/pam.d/su
          n=`cat /etc/login.defs | grep SU_WHEEL_ONLY | wc -l`
          if [ $n -eq 0 ];then
          echo SU_WHEEL_ONLY yes >> /etc/login.defs
          fi

          echo "即將對(duì)系統(tǒng)中的賬戶(hù)進(jìn)行檢查...."
          echo "系統(tǒng)中有登錄權(quán)限的用戶(hù)有:"
          awk -F: '($7=="/bin/bash"){print $1}' /etc/passwd
          echo "********************************************"
          echo "系統(tǒng)中UID=0的用戶(hù)有:"
          awk -F: '($3=="0"){print $1}' /etc/passwd
          echo "********************************************"
          N=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
          echo "系統(tǒng)中空密碼用戶(hù)有:$N"
          if [ $N -eq 0 ];then
           echo "恭喜你,系統(tǒng)中無(wú)空密碼用戶(hù)!!"
           echo "********************************************"
          else
           i=1
           while [ $N -gt 0 ]
           do
              None=`awk -F: '($2==""){print $1}' /etc/shadow|awk 'NR=='$i'{print}'`
              echo "------------------------"
              echo $None
              echo "必須為空用戶(hù)設(shè)置密碼!!"
              passwd $None
              let N--
           done
           M=`awk -F: '($2==""){print $1}' /etc/shadow|wc -l`
           if [ $M -eq 0 ];then
            echo "恭喜,系統(tǒng)中已經(jīng)沒(méi)有空密碼用戶(hù)了!"
           else
          echo "系統(tǒng)中還存在空密碼用戶(hù):$M"
           fi
          fi

          echo "即將對(duì)系統(tǒng)中重要文件進(jìn)行鎖定,鎖定后將無(wú)法添加刪除用戶(hù)和組"
          read -p "警告:此腳本運(yùn)行后將無(wú)法添加刪除用戶(hù)和組!!確定輸入Y,取消輸入N;Y/N:" i
          case $i in
                [Y,y])
                      chattr +i /etc/passwd
                      chattr +i /etc/shadow
                      chattr +i /etc/group
                      chattr +i /etc/gshadow
                      echo "鎖定成功!"
          ;;
                [N,n])
                      chattr -i /etc/passwd
                      chattr -i /etc/shadow
                      chattr -i /etc/group
                      chattr -i /etc/gshadow
                      echo "取消鎖定成功!!"
          ;;
                 *)
                      echo "請(qǐng)輸入Y/y or N/n"
          esac


          五、實(shí)現(xiàn)磁盤(pán)分區(qū)的

          只支持分配主分區(qū)和標(biāo)準(zhǔn)的linux文件系統(tǒng)(ext4/xfs)的分區(qū)

          #! /bin/bash
          # Function:對(duì)硬盤(pán)進(jìn)行分區(qū),得到一個(gè)標(biāo)準(zhǔn)的linux文件系統(tǒng)(ext4/xfs)的主分區(qū)
          cat /proc/partitions > old
          read -p "請(qǐng)輸入你要分區(qū)的硬盤(pán)(寫(xiě)絕對(duì)路徑,如:/dev/sda):" A
          if [ -e $A ];then
            echo "true"
          else
            echo "該設(shè)備不存在!!"
            exit
          fi
          read -p "請(qǐng)輸入你要?jiǎng)?chuàng)建的磁盤(pán)分區(qū)類(lèi)型(這里只能是主分區(qū),默認(rèn)按回車(chē)即可):" B
          read -p "請(qǐng)輸入分區(qū)數(shù)字,范圍1-4,默認(rèn)從1開(kāi)始,默認(rèn)按回車(chē)即可:" C
          read -p "請(qǐng)輸入扇區(qū)起始表號(hào),默認(rèn)按回車(chē)即可:" D
          read -p "請(qǐng)輸入你要分區(qū)的分區(qū)大小(格式:如 +5G ):" E
          fdisk $A << EOF
          n
          p
          $C
          $D
          $E
          w
          EOF
          echo "一個(gè)標(biāo)準(zhǔn)的linux文件系統(tǒng)的分區(qū)已經(jīng)建立好!!"
          partprobe $A
          echo "-------------------------------"
          cat /proc/partitions
          cat /proc/partitions > new
          F=`diff new old | grep "<" | awk '{print $5}'`
          echo "-------------------------------"
          echo $F
          echo "你想對(duì)新分區(qū)設(shè)定什么類(lèi)型的文件系統(tǒng)?有以下選項(xiàng):"
          echo "A:ext4文件系統(tǒng)"
          echo "B:xfs文件系統(tǒng)"
          read -p "請(qǐng)輸入你的選擇:" G
          case $G in
                  a|A)
                     mkfs.ext4 /dev/$F
                     echo "該分區(qū)將被掛載在 "/mnt/$F" 下" 
                     m=`ls /mnt/|grep $F | wc -l`
                     if [ $m -eq 0 ];then
                      mkdir /mnt/$F
                     fi
                     n=`cat /etc/fstab | grep /dev/$F| wc -l`
                     if [ $n -eq 0 ];then
                        echo "/dev/$F     /mnt/$F     ext4         defaults          0      0" >> /etc/fstab
                     else
                        sed -i '/^\/dev\/$F/c\/dev/$F     /mnt/$F     ext4         defaults          0      0' /etc/fstab
                     fi
                     mount -a
                     df -Th
          ;;
                  b|B)
                     mkfs.xfs -f /dev/$F
                     echo "該分區(qū)將被掛載在 "/mnt/$F" 下" 
                     m=`ls /mnt/|grep $F | wc -l`
                     if [ $m -eq 0 ];then
                        mkdir /mnt/$F
                     fi
                     n=`cat /etc/fstab | grep /dev/$F | wc -l`
                     if [ $n -eq 0 ];then
                        echo "/dev/$F     /mnt/$F      xfs       defaults          0      0" >> /etc/fstab
                     else
                        sed -i '/^\/dev\/$F/c\/dev/$F     /mnt/$F     xfs         defaults          0      0' /etc/fstab
                     fi
                     mount -a
                     df -Th
          ;;
                  *)
                     echo "你的輸入有誤!!"
          esac

          六、使用一整塊硬盤(pán)創(chuàng)建邏輯卷

          #!/bin/bash
          # Function:使用一整塊硬盤(pán)創(chuàng)建LVM邏輯卷
          read -p "請(qǐng)輸入你要做成邏輯卷的硬盤(pán)(寫(xiě)絕對(duì)路徑,如:/dev/sda):" path
          if [ -e $path ];then
            echo "true"
          else
            echo "該設(shè)備不存在!!"
            exit
          fi
          pvcreate $path
          echo "該硬盤(pán)已做成物理卷!"
          vgcreate myvg $path
          echo "該物理卷已加入卷組 myvg 中"
          vgs
          free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
          echo "該物理卷剩余的空間大小為:$free "
          read -p "請(qǐng)輸入你要?jiǎng)?chuàng)建邏輯卷的大小(如:1G):" repy2
          lvcreate -L $repy2 -n mylv myvg
          echo "已成功創(chuàng)建邏輯卷mylv"
          echo "------------------------"
          lvs
          echo "------------------------"
          echo "你想對(duì)新分區(qū)設(shè)定什么類(lèi)型的文件系統(tǒng)?有以下選項(xiàng):"
          echo "A:ext4文件系統(tǒng)"
          echo "B:xfs文件系統(tǒng)"
          read -p "請(qǐng)輸入你的選擇:" repy3
          case $repy3 in
                  a|A)
                     mkfs.ext4 /dev/myvg/mylv
                     echo "該分區(qū)將被掛載在 "/mnt/mylv" 下" 
                     m=`ls /mnt/|grep mylv | wc -l`
                     if [ $m -eq 0 ];then
                      mkdir /mnt/mylv
                     fi
                     echo "/dev/myvg/mylv     /mnt/mylv     ext4         defaults          0      0" >> /etc/fstab
                     mount -a
                     df -Th
          ;;
                  b|B)
                     mkfs.xfs -f /dev/myvg/mylv
                     echo "該分區(qū)將被掛載在 "/mnt/mylv" 下" 
                     m=`ls /mnt/|grep mylv | wc -l`
                     if [ $m -eq 0 ];then
                        mkdir /mnt/mylv
                     fi
                     echo "/dev/myvg/mylv     /mnt/mylv      xfs       defaults          0      0" >> /etc/fstab
                     mount -a
                     df -Th
          ;;
                  *)
                     echo "你的輸入有誤!!"
          esac

          七、將一塊硬盤(pán)分區(qū),然后分區(qū)設(shè)置為虛擬卷

          #! /bin/bash
          # Author:謝公子
          # Date:2018-10-13
          # Function:新建一個(gè)分區(qū),并做成邏輯卷
          cat /proc/partitions > old
          read -p "請(qǐng)輸入你要分區(qū)的硬盤(pán)(寫(xiě)絕對(duì)路徑,如:/dev/sda):" A
          if [ -e $A ];then
            echo "true"
          else
            echo "該設(shè)備不存在!!"
            exit
          fi
          read -p "請(qǐng)輸入你要?jiǎng)?chuàng)建的磁盤(pán)分區(qū)類(lèi)型(這里只能是主分區(qū),默認(rèn)按回車(chē)即可):" B
          read -p "請(qǐng)輸入分區(qū)數(shù)字,范圍1-4,默認(rèn)從1開(kāi)始,默認(rèn)按回車(chē)即可:" C
          read -p "請(qǐng)輸入扇區(qū)起始表號(hào),默認(rèn)按回車(chē)即可:" D
          read -p "請(qǐng)輸入你要分區(qū)的分區(qū)大小(格式:如 +5G ):" E
          read -p "請(qǐng)輸入你要?jiǎng)澐譃檫壿嬀淼姆謪^(qū)盤(pán)符(默認(rèn)回車(chē)即可):" Z
          fdisk $A << EOF
          n
          p
          $C
          $D
          $E
          t
          $Z
          8e
          p
          w
          EOF
          echo "一個(gè)標(biāo)準(zhǔn)LVM的分區(qū)已經(jīng)建立好!!"
          partprobe $A
          echo "-------------------------------"
          cat /proc/partitions
          cat /proc/partitions > new
          F=`diff new old | grep "<" | awk '{print $5}'`
          echo "-------------------------------"
          echo $F
          pvcreate /dev/$F
          echo "該硬盤(pán)已做成物理卷!"
          n=`vgs | grep myvg |wc -l`
          if [ $n -eq 0 ];then
             vgcreate myvg /dev/$F
             echo "該物理卷已加入卷組myvg中"
          else
             vgextend myvg /dev/$F
             echo  "該物理卷已加入卷組myvg中"
             vgs
             free=`vgs| awk '$1~/myvg/{print}'|awk '{print $7}'`
             echo "該卷組剩余的空間大小為:$free "
             lvs
             exit
          fi
          vgs
          free=`vgs| awk '$1~/myvg/{print}'|awk '{print $6}'`
          echo "該卷組剩余的空間大小為:$free "
          read -p "請(qǐng)輸入你要?jiǎng)?chuàng)建邏輯卷的大小(如:1G):" repy2
          lvcreate -L $repy2 -n mylv myvg
          echo "已成功創(chuàng)建邏輯卷mylv"
          echo "------------------------"
          lvs
          echo "------------------------"
          echo "你想對(duì)新分區(qū)設(shè)定什么類(lèi)型的文件系統(tǒng)?有以下選項(xiàng):"
          echo "A:ext4文件系統(tǒng)"
          echo "B:xfs文件系統(tǒng)"
          read -p "請(qǐng)輸入你的選擇:" G
          case $G in
                  a|A)
                     mkfs.ext4 /dev/myvg/mylv
                     echo "該分區(qū)將被掛載在 "/mnt/$F" 下" 
                     m=`ls /mnt/|grep $F | wc -l`
                     if [ $m -eq 0 ];then
                      mkdir /mnt/$F
                     fi
                     echo "/dev/myvg/mylv     /mnt/$F     ext4         defaults          0      0" >> /etc/fstab
                     mount -a
                     df -Th
          ;;
                  b|B)
                     mkfs.xfs -f /dev/myvg/mylv
                     echo "該分區(qū)將被掛載在 "/mnt/$F" 下" 
                     m=`ls /mnt/|grep $F | wc -l`
                     if [ $m -eq 0 ];then
                        mkdir /mnt/$F
                     fi
                     echo "/dev/myvg/mylv     /mnt/$F      xfs       defaults          0      0" >> /etc/fstab
                     mount -a
                     df -Th
          ;;
                  *)
                     echo "你的輸入有誤!!"
          esac





          良許花了一個(gè)半月的時(shí)間研發(fā)了一門(mén) Linux 命令課程,歡迎購(gòu)買(mǎi)學(xué)習(xí)!

          課程特色:

          1. 詳細(xì)總結(jié) 150 個(gè)高頻使用命令,學(xué)完可應(yīng)對(duì)工作中 95% 命令需求;
          2. 答疑群提供無(wú)限次答疑服務(wù),答疑群氛圍很好;
          3. 總時(shí)長(zhǎng)超 10 小時(shí),媲美大課時(shí)長(zhǎng)。
          長(zhǎng)按下方卡片購(gòu)買(mǎi)



          強(qiáng)烈推薦一位騰訊大佬錄制的 Shell 實(shí)戰(zhàn)案例課程(已獲授權(quán)):

          1. 大佬在騰訊工作 6 年,在大廠工作十幾年,經(jīng)驗(yàn)豐富;
          2. 大佬根據(jù)自己在大廠工作經(jīng)驗(yàn)總結(jié)了 100 個(gè)案例,超級(jí)實(shí)用!
          3. 學(xué)完這 100 個(gè)案例,肯定對(duì)自己的 Shell 編程有很大的提升;
          4. 答疑群提供無(wú)限次答疑服務(wù),答疑群氛圍很好。
          長(zhǎng)按下方卡片購(gòu)買(mǎi)


          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  AV东方在线 | 青青青草免费在线 | 国产色变性手术情片亚洲 | 大香蕉精品在线 | 国产精品美女久久久 |