


Le script Shell implémente la surveillance des ressources du système et des processus Linux_Connaissances de base
Dans le processus d'exploitation et de maintenance du serveur, il est souvent nécessaire de surveiller diverses ressources du serveur, telles que : la surveillance de la charge du processeur, la surveillance de l'utilisation du disque, la surveillance du numéro de processus, etc., afin d'alarmer et de notifier rapidement quand une anomalie se produit dans le système Administrateur. Cet article présente plusieurs exigences de surveillance courantes et l'écriture de scripts shell sous les systèmes Linux.
Répertoire des articles :
1.Linux utilise Shell pour vérifier si le processus existe
2.Linux utilise Shell pour détecter l'utilisation du processeur du processus
3.Linux utilise Shell pour détecter l'utilisation de la mémoire des processus
4.Linux utilise Shell pour détecter l'utilisation du handle de processus
5.Linux utilise Shell pour vérifier si un port TCP ou UDP écoute
6.Linux utilise Shell pour vérifier le nombre de processus en cours d'exécution d'un certain nom de processus
7.Linux utilise Shell pour détecter la charge du processeur du système
8.Linux utilise Shell pour détecter l'espace disque du système
9. Résumé
Vérifiez si le processus existe
Lors de la surveillance d'un processus, nous avons généralement besoin d'obtenir l'ID du processus. L'ID du processus est l'identifiant unique du processus. Cependant, il peut parfois y avoir plusieurs processus avec le même nom de processus exécutés sous différents utilisateurs sur le serveur. . La fonction suivante GetPID Elle donne la fonction d'obtenir l'ID de processus du nom de processus spécifié sous l'utilisateur spécifié (actuellement, on considère uniquement le démarrage d'un processus avec ce nom de processus sous cet utilisateur. Elle a deux paramètres : le nom d'utilisateur et le nom de processus). Il utilise d'abord ps pour trouver les informations sur le processus, et en même temps utilise grep pour filtrer le processus requis, et enfin utilise sed et awk pour trouver la valeur ID du processus requis (cette fonction peut être modifiée en fonction de la situation réelle , par exemple si d'autres informations doivent être filtrées, etc.).
Liste 1. Surveiller le processus
fonction GetPID #User #Name
{
PsUser=$1
PsName=2$
pid=`ps -u $PsUser|grep $PsName|grep -v grep|grep -v vi|grep -v dbxn
|grep -v tail|grep -v start|grep -v stop |sed -n 1p |awk '{print $1}'`
echo $pid
>
Exemple de démo :
1) Programme source (par exemple, recherchez l'ID du processus où l'utilisateur est root et le nom du processus est CFTestApp)
PID=`GetPID racine CFTestApp`
écho $PID
2) Sortie du résultat
11426
[coque dyu@xilinuxbldsrv]$
3) Analyse des résultats
Comme le montre la sortie ci-dessus : 11426 est l'ID de processus du programme CFTestApp sous l'utilisateur root.
4) Introduction aux commandes
1. ps : affichez les informations instantanées sur le processus dans le système. Paramètres : -u
Parfois, il est possible que le processus ne démarre pas. La fonction suivante consiste à vérifier si l'ID du processus existe. Si le processus n'est pas en cours d'exécution, le résultat est :
.
Le processus n'existe pas
# Vérifiez si le processus existe
Si [ "-$PID" == "-" ]
Alors
{
echo "Le processus n'existe pas."
}
fi
Détecter l'utilisation du processeur du processus
Lors de la maintenance des services d'application, nous rencontrons souvent des situations où le processeur est trop élevé, provoquant une congestion et une interruption des activités. Un excès de CPU peut être dû à des situations anormales telles qu'une surcharge commerciale ou des boucles sans fin. Le CPU du processus métier est constamment surveillé via des scripts. Le personnel de maintenance peut être averti à temps lorsque l'utilisation du CPU est anormale, ce qui permet au personnel de maintenance d'analyser, de localiser et de détecter. éviter les affaires en temps opportun, les interruptions, etc. La fonction suivante obtient l'utilisation du processeur du processus pour un ID de processus spécifié. Il a un paramètre pour l'ID du processus. Il utilise d'abord ps pour trouver les informations sur le processus, tout en filtrant la ligne %CPU via grep -v, et utilise enfin awk pour trouver la partie entière du pourcentage d'utilisation du processeur (s'il y en a plusieurs). CPU dans le système, l'utilisation du CPU peut être supérieure à 100 %).
Liste 2. Surveillance en temps réel du CPU des processus métier
fonction GetCpu
{
CpuValue=`ps -p $1 -o pcpu |grep -v CPU | awk '{print $1}' | echo $CpuValue
>
Liste 3. Déterminez si l'utilisation du processeur dépasse la limite
{
PID=1$
cpu=`GetCpu $PID`
Si [ $cpu -gt 80 ]
Alors
{
echo "L'utilisation du processeur est supérieure à 80 %"
}
sinon
{
echo "L'utilisation du processeur est normale"
}
fi
>
1) Programme source (en supposant que l'ID de processus de CFTestApp a été interrogé ci-dessus comme 11426)
L'utilisation du processeur est normale
[coque dyu@xilinuxbldsrv]$
Comme le montre le résultat ci-dessus : l'utilisation actuelle du processeur du programme CFTestApp est de 75 %, ce qui est normal et ne dépasse pas la limite d'alarme de 80 %.
Détecter l'utilisation de la mémoire du processus
Lors de la maintenance des services d'application, nous rencontrons souvent des situations où le processus plante en raison d'une utilisation excessive de la mémoire, provoquant une interruption de l'activité (par exemple, l'espace mémoire adressable maximum d'un programme 32 bits est de 4G. S'il est dépassé, la mémoire l'application échouera et la mémoire physique est également limitée). Une utilisation excessive de la mémoire peut être due à des fuites de mémoire, à une accumulation de messages, etc. L'utilisation de la mémoire du processus métier est constamment surveillée via des scripts. Des alarmes peuvent être envoyées à temps (par exemple, par SMS) lorsque l'utilisation de la mémoire est anormale, de sorte que. le personnel de maintenance peut le gérer en temps opportun. La fonction suivante obtient l'utilisation de la mémoire du processus pour un ID de processus spécifié. Il a un paramètre pour l'ID du processus, il utilise d'abord ps pour trouver les informations sur le processus, tout en filtrant les lignes VSZ via grep -v, puis obtient l'utilisation de la mémoire en mégaoctets en divisant par 1 000.Liste 4. Surveiller l'utilisation de la mémoire des processus métier
Fonction GetMem
{
MEMUsage=`ps -o vsz -p $1|grep -v VSZ`
(( MEMUsage /= 1000))
echo $MEMUsage
>
La fonction suivante consiste à obtenir l'utilisation de la mémoire de ce processus via la fonction GetMem ci-dessus, puis à utiliser des instructions conditionnelles pour déterminer si l'utilisation de la mémoire dépasse la limite si elle dépasse 1,6 Go (peut être ajustée en fonction de la situation réelle). une alarme sera émise, sinon des informations normales seront émises.
Listing 5. Déterminer si l'utilisation de la mémoire dépasse la limite
mem=`GetMem $PID` si [ $mem -gt 1600 ]
alors
{
echo "L'utilisation de la mémoire est supérieure à 1,6G"
}
sinon
{
echo "L'utilisation de la mémoire est normale"
}
fi
1) Programme source (en supposant que l'ID de processus de CFTestApp a été interrogé ci-dessus comme 11426)
echo "L'utilisation de la mémoire est $mem M"
Si [ $mem -gt 1600 ]
Alors
{
echo "L'utilisation de la mémoire est supérieure à 1,6 Go"
}
sinon
{
echo "L'utilisation de la mémoire est normale"
}
fi
L'utilisation de la mémoire est normale
[coque dyu@xilinuxbldsrv]$
Comme le montre la sortie ci-dessus : l'utilisation actuelle de la mémoire du programme CFTestApp est de 248 Mo, ce qui est normal et ne dépasse pas la limite d'alarme de 1,6 G.
Détecter l'utilisation du gestionnaire de processus
Lors de la maintenance des services applicatifs, nous rencontrons souvent des interruptions d'activité dues à une utilisation excessive des handles. L'utilisation de handles de processus sur chaque plateforme est limitée. Par exemple, sur la plateforme Linux, nous pouvons utiliser la commande ulimit – n (ouvrir les fichiers (-n) 1024) ou afficher le contenu de /etc/security/limits.conf pour obtenir la limite de gestion du processus. Une utilisation excessive du handle peut être due à une charge excessive, à une fuite du handle, etc. L'utilisation du handle du processus métier est constamment surveillée via des scripts. Des alertes peuvent être envoyées à temps lorsque des anomalies se produisent (par exemple, par SMS), afin que le personnel de maintenance puisse le faire. les traiter en temps opportun. La fonction suivante obtient l’utilisation du handle de processus pour un ID de processus spécifié. Il a un paramètre pour l'ID de processus. Il utilise d'abord ls pour afficher les informations de descripteur de processus, puis utilise wc -l pour compter le nombre de descripteurs de sortie.
{
DES=`ls /proc/$1/fd | wc -l`
écho $DES
>
si [ $des -gt 900 ]
alors
{
echo "Le nombre de des est supérieur à 900"
}
sinon
{
echo "Le nombre de des est normal"
}
fi
Exemple de démo :
1) Programme source (en supposant que l'ID de processus de CFTestApp trouvé dans la requête ci-dessus est 11426)
des=`GetDes 11426`
echo "Le nombre de des est $des"
Si [ $des -gt 900 ]
Alors
{
echo "Le nombre de des est supérieur à 900"
}
sinon
{
echo "Le nombre de des est normal"
}
fi
2) Sortie du résultat
Le nombre de des est de 528
Le nombre de des est normal
[coque dyu@xilinuxbldsrv]$
3) Analyse des résultats
Comme le montre la sortie ci-dessus : l'utilisation actuelle du handle du programme CFTestApp est de 528, ce qui est normal et ne dépasse pas la limite d'alarme de 900.
4) Introduction aux commandes
wc : compte le nombre d'octets, de mots et de lignes dans le fichier spécifié, et affiche et affiche les résultats statistiques. Paramètres : -l compte le nombre de lignes. -c compte les octets. -w Compte le nombre de mots.
Vérifiez si un port TCP ou UDP est à l'écoute
La détection de port est souvent rencontrée dans la détection des ressources système, en particulier dans les situations de communication réseau, la détection de l'état du port est souvent très importante. Parfois, le processus, le processeur, la mémoire, etc. peuvent être dans un état normal, mais le port est dans un état anormal et l'entreprise ne fonctionne pas normalement. La fonction suivante peut déterminer si le port spécifié écoute. Il a un paramètre pour le port à détecter. Il utilise d'abord netstat pour afficher les informations d'occupation du port, puis filtre le nombre de ports TCP d'écoute via grep, awk et wc. La deuxième instruction affiche le nombre de ports UDP de surveillance. . Si l'écoute des ports TCP et UDP est entièrement 0, renvoyez 0, sinon renvoyez 1.
.Liste 6. Détection de ports
fonction Écoute
{
TCPListeningnum=`netstat -an | grep ":$1 " n
awk '$1 == "tcp" && $NF == "ECOUTE" {print $0}' | wc -l`
UDPListeningnum=`netstat -an|grep ":$1 " n
|awk '$1 == "udp" && $NF == "0.0.0.0:*" {print $0}' | (( Numéro d'écoute = TCPListeningnum UDPListeningnum ))
Si [ $Listeningnum == 0 ]
Alors
{
écho "0"
}
sinon
{
écho "1"
}
fi
>
1) Programme source (par exemple, interrogez l'état du port 8080 pour voir s'il écoute)
Si [ $isListen -eq 1 ]
Alors
{
echo "Le port écoute"
}
sinon
{
echo "Le port n'écoute pas"
}
fi
[coque dyu@xilinuxbldsrv]$
3) Analyse des résultats
Comme le montre la sortie ci-dessus : le port 8080 de ce serveur Linux est en état d'écoute.
4) Introduction aux commandes
netstat : Utilisé pour afficher les données statistiques liées aux protocoles IP, TCP, UDP et ICMP. Il est généralement utilisé pour vérifier la connexion réseau de chaque port de la machine. Paramètres : -a affiche toutes les sockets de la connexion. -n Utiliser l'adresse IP directement sans passer par un serveur de noms de domaine.
La fonction suivante détecte également si un certain port TCP ou UDP est dans un état normal.
tcp : netstat -an|egrep $1 |awk '$6 == "ÉCOUTER" && $1 == "tcp" {print $0}'
udp : netstat -an|egrep $1 |awk '$1 == "udp" && $5 == "0.0.0.0:*" {print $0}'
Présentation de la commande
egrep : recherche la chaîne spécifiée dans le fichier. L'effet d'exécution de egrep est similaire à grep -E. La syntaxe et les paramètres utilisés peuvent faire référence à la commande grep. La différence avec grep réside dans la méthode d'interprétation des chaînes. egrep utilise une syntaxe d'expression régulière étendue pour interpréter, tandis que grep utilise des expressions régulières de base. Syntaxe, les expressions régulières étendues ont des spécifications d'expression plus complètes que les expressions régulières de base.
Afficher le nombre de processus en cours d'exécution d'un certain nom de processus
Parfois, nous pouvons avoir besoin d'obtenir le nombre de processus démarrés sur le serveur. La fonction suivante consiste à détecter le nombre de processus en cours d'exécution. Par exemple, le nom du processus est CFTestApp.
Runnum=`ps -ef | grep -v vi | grep -v grep "[ /]CFTestApp" |
Lors de la maintenance du serveur, nous rencontrons parfois des interruptions d'activité en raison d'une charge (utilisation) excessive du processeur système. Plusieurs processus peuvent être en cours d'exécution sur le serveur. Il est normal de visualiser le processeur d'un seul processus, mais la charge du processeur de l'ensemble du système peut être anormale. La charge du processeur du système est constamment surveillée via des scripts et des alarmes peuvent être envoyées à temps lorsque des anomalies se produisent, permettant au personnel de maintenance de les traiter en temps opportun et d'éviter les accidents. La fonction suivante peut détecter l'utilisation du processeur du système. Utilisez vmstat pour obtenir la valeur d'inactivité du processeur du système 5 fois, prendre la moyenne, puis obtenir la valeur réelle d'utilisation du processeur en prenant la différence de 100.
{
CpuIdle=`vmstat 1 5 |sed -n '3,$p' n
|awk '{x = x $15} FIN {print x/5}' |awk -F '{print $1}'
. CpuNum=`echo "100-$CpuIdle" bc`
echo $CpuNum
>
1) Programme source
echo "Le processeur système est $cpu"
si [ $cpu -gt 90 ]
alors
{
echo "L'utilisation du processeur système est supérieure à 90 %"
}
sinon
{
echo "L'utilisation du processeur système est normale"
}
fi
L'utilisation du processeur système est normale
[coque dyu@xilinuxbldsrv]$
3)結果分析
從上面的輸出可見:目前 Linux 伺服器系統 CPU 使用率為 87%,是正常的,沒有超過 90% 的警告限制。
4)指令介紹
vmstat:Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、進程、CPU 活動進行監控。
參數: -n 表示在週期性循環輸出時,輸出的頭部資訊僅顯示一次。
偵測系統磁碟空間
系統磁碟空間偵測是系統資源偵測的重要部分,在系統維護維護中,我們經常需要查看伺服器磁碟空間使用量。因為有些業務要時時寫話單,日誌,或者臨時文件等,如果磁碟空間用盡,也可能會導致業務中斷,下面的函數可以檢測當前系統磁碟空間中某個目錄的磁碟空間使用情況. 輸入參數為需要偵測的目錄名,使用df 輸出系統磁碟空間使用訊息,然後透過grep 和awk 過濾得到某個目錄的磁碟空間使用百分比。
function GetDiskSpc
{
if [ $# -ne 1 ]
then
return 1
fi
Folder="$1$"
DiskSpace=`df -k |grep $Folder |awk '{print $5}' |awk -F% '{print $1}'
echo $DiskSpace
}
範例示範:
1)原始程式(偵測目錄為 /boot)
Folder="/boot"
DiskSpace=`GetDiskSpc $Folder`
echo "The system $Folder disk space is $DiskSpace%"
if [ $DiskSpace -gt 90 ]
then
{
echo "The usage of system disk($Folder) is larger than 90%"
}
else
{
echo "The usage of system disk($Folder) is normal"
}
fi
2)結果輸出
The system /boot disk space is 14%
The usage of system disk(/boot) is normal
[dyu@xilinuxbldsrv shell]$
3)結果分析
從上面的輸出可見:目前此 Linux 伺服器系統上 /boot 目錄的磁碟空間已經使用了 14%,是正常的,沒有超過使用 90% 的警告限制。
4)指令介紹
df:檢查檔案系統的磁碟空間佔用情況。可以利用此指令來取得硬碟被佔用了多少空間,目前還剩下多少空間等資訊。 參數:-k 以 k 位元組為單位顯示。
總結
在 Linux 平台下,shell 腳本監控是一個非常簡單,方便,有效的對伺服器,進程進行監控的方法,對系統開發以及進程維護人員非常有幫助。它不僅可以對上面的訊息進行監控,發送告警,同時也可以監控進程的日誌等等的訊息,希望本文對大家有幫助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

<p>La personnalisation de votre système d'exploitation est un excellent moyen de rendre votre vie quotidienne plus agréable. Vous pouvez modifier l'interface utilisateur, appliquer des thèmes personnalisés, ajouter des widgets, etc. Aujourd’hui, nous allons vous montrer comment installer ClassicShell sur Windows 11. </p><p>Ce programme existe depuis longtemps et vous permet de modifier le système d'exploitation. Des bénévoles ont désormais commencé à diriger l’organisation, qui a été dissoute en 2017. Le nouveau projet s'appelle OpenShell et est actuellement disponible sur Github pour les personnes intéressées. </p>&a

Voyez-vous ce message d'erreur « Add-AppxPackage : Le déploiement a échoué avec HRESULT : 0x80073D02, Le package ne peut pas être installé car la ressource qu'il modifie est actuellement en cours d'utilisation. Erreur 0x80073D02... » dans PowerShell lorsque vous exécutez le script ? Comme l'indique le message d'erreur, cela se produit lorsque l'utilisateur tente de réenregistrer une ou toutes les applications WindowsShellExperienceHost pendant l'exécution du processus précédent. Nous avons quelques solutions simples pour résoudre ce problème rapidement. Correctif 1 – Terminez le processus hôte d’expérience que vous devez terminer avant d’exécuter la commande PowerShell

Le shell ouvert qui ne fonctionne pas sous Windows 11 n’est pas un problème nouveau et tourmente les utilisateurs depuis l’avènement de ce nouveau système d’exploitation. La cause du problème de non-fonctionnement d’Open-Shell Windows 11 n’est pas spécifique. Cela peut être dû à des erreurs inattendues dans les programmes, à la présence de virus ou de logiciels malveillants ou à des fichiers système corrompus. Pour ceux qui ne le savent pas, Open-Shell remplace Classic Shell, qui a été abandonné en 2017. Vous pouvez consulter notre tutoriel sur la façon d'installer Classic Shell sur Windows 11. Comment remplacer le menu Démarrer de Windows 11
![Explorer.exe ne démarre pas au démarrage du système [Réparer]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
De nos jours, de nombreux utilisateurs de Windows commencent à rencontrer de graves problèmes avec le système Windows. Le problème est qu'Explorer.exe ne peut pas démarrer une fois le système chargé et les utilisateurs ne peuvent pas ouvrir de fichiers ou de dossiers. Cependant, les utilisateurs Windows peuvent ouvrir l'Explorateur Windows manuellement à l'aide de l'invite de commande dans certains cas et cela doit être fait à chaque redémarrage du système ou après le démarrage du système. Cela peut être problématique et est dû aux facteurs suivants mentionnés ci-dessous. Fichiers système corrompus. Activez les paramètres de démarrage rapide. Pilotes d’affichage obsolètes ou problématiques. Des modifications ont été apportées à certains services du système. Fichier de registre modifié. En gardant à l'esprit tous les facteurs ci-dessus, nous en avons proposé quelques-uns qui aideront sûrement les utilisateurs.

Lors du traitement de fichiers sous les systèmes Linux, il est parfois nécessaire de supprimer des lignes à la fin du fichier. Cette opération est très courante dans les applications pratiques et peut être réalisée grâce à quelques commandes simples. Cet article présentera les étapes pour supprimer rapidement la ligne à la fin du fichier dans le système Linux et fournira des exemples de code spécifiques. Étape 1 : Vérifiez la dernière ligne du fichier Avant d'effectuer l'opération de suppression, vous devez d'abord confirmer quelle ligne est la dernière ligne du fichier. Vous pouvez utiliser la commande tail pour afficher la dernière ligne du fichier. La commande spécifique est la suivante : tail-n1filena.

Sous-système Windows pour Linux La première option consiste à utiliser le sous-système Windows pour Linux ou WSL, qui est une couche de compatibilité permettant d'exécuter les exécutables binaires Linux de manière native sur les systèmes Windows. Il fonctionne pour la plupart des scénarios et vous permet d'exécuter des scripts shell sous Windows 11/10. WSL n'est pas automatiquement disponible, vous devez donc l'activer via les paramètres de développement de votre appareil Windows. Vous pouvez le faire en allant dans Paramètres > Mise à jour et sécurité > Pour les développeurs. Passez en mode développeur et confirmez l'invite en sélectionnant Oui. Ensuite, cherchez W

Quelques exemples de scripts Python : alarmes WeChat d'entreprise, clients FTP, clients SSH, clients Saltstack, clients vCenter, obtention du délai d'expiration du certificat SSL du nom de domaine, envoi des prévisions météo du jour et des graphiques de tendances météorologiques futures ; quelques exemples de scripts Shell : sauvegarde complète SVN, Zabbix surveille l'expiration des mots de passe des utilisateurs, construit YUM local et les besoins des lecteurs sont mentionnés dans l'article précédent (lorsque la charge est élevée, recherchez les scripts de processus qui occupent une quantité plus élevée et stockent ou envoient des notifications, donc c'est un peu long) ; veuillez le lire patiemment. À la fin de l'article, il y a un œuf de Pâques après tout. Script Python faisant partie de l'alarme WeChat d'entreprise Ce script utilise l'application WeChat d'entreprise pour exécuter l'alarme WeChat et peut être utilisé

OpenShell est un utilitaire logiciel gratuit qui peut être utilisé pour personnaliser le menu Démarrer de Windows 11 pour qu'il ressemble à un menu de style classique ou à un menu de style Windows 7. Le menu Démarrer des versions précédentes de Windows offrait aux utilisateurs un moyen simple de parcourir le contenu de leur système. Fondamentalement, OpenShell remplace ClassicShell qui fournit différents éléments d'interface utilisateur qui permettent d'obtenir les fonctionnalités de cette dernière version à partir des versions précédentes de Windows. Une fois le développement de ClassicShell arrêté en 2017, il a été maintenu et développé par des bénévoles de GitHub sous le nom d'OpenShell. C'est lié à Win
