Table des matières
需求:
需求分析
注意事项
Maison tutoriels informatiques connaissances en informatique Notes d'étude des scripts Linux, conseils d'utilisation des fonctions de journalisation

Notes d'étude des scripts Linux, conseils d'utilisation des fonctions de journalisation

Feb 19, 2024 pm 05:36 PM
脚本 shell shell脚本 log

Notes détude des scripts Linux, conseils dutilisation des fonctions de journalisation

本文描述了一个用于记录shell脚本执行日志的日志脚本函数。在进行shell脚本开发时,经常需要监控系统数据。为了方便查看,我们可以将脚本运行情况记录为日志文件,避免需要一直在命令控制台上监视。

需求:

1、可以记录脚本的运行情况;

2、可以记录时间;

3、可以在输入log达到一定的行数后对以前的log进行删减,防止log文件无限累积;

需求分析

这个简单需求可以通过编写一个函数来实现,该函数能够将脚本中的日志信息输出到同名的log文件中,方便开发人员日后查阅分析脚本运行情况。可以根据个人喜好和技术能力选择合适的方式来实现这一功能。

需求实现:

经过三天三夜的奋战,写出了以下脚本函数:

#!/bin/bash
log(){
#log文件名
local fileName="./$(basename $0 .sh).log"
#log文件最大存储log行数(此处设置最大存储log行数是100行)
local fileMaxLen=100
#超过log最大存储行数后需要从顶部开始删除的行数(此处设置的是删除第1到第10行的数据)
local fileDeleteLen=10
if test $fileName
then
#记录log
echo "[`date +%y/%m/%d-%H:%M:%S`]:$*" >> $fileName
#获取log文件实际行数
loglen=`grep -c "" $fileName`

if [ $loglen -gt $fileMaxLen ]
then
#从顶部开始删除对应行数的log
sed -i '1,'$fileDeleteLen'd' $fileName
fi
else
echo "[`date +%y/%m/%d-%H:%M:%S`]:$*" > $fileName
fi
}


#test
testdate=100
#记录输出的字符串
log "test string"
#记录输出的数据
log "testdate=$testdate"
#记录输出的运算
log $[1+2]
#记录命令输出的信息
log $(printf "this is cmd test %sn" "this is cmd output string")
Copier après la connexion

其中主要的就是log()这个脚本函数,’#test’之后的都是对这个函数的测试;

实现功能:

1、可以快速的加入到当前的脚本中,加入方法:将log()函数复制到在当前的脚本的最前面,然后后面对需要记录的日志直接调用log就可以;

2、加入需要记录日志的脚本后,执行脚本时,会在执行脚本同目录下生成一个同名的.log文件,里面就是执行脚本的日志输出;

3、可以记录脚本运行时间及可对字符串、数据变量、及命令输出的信息进行记录;

4、可以对log文件的行数进行判断,当行数超过最大限制行数后,会从log文件顶部开始删除以前的log记录。

使用示例:

比如要实时查看CPU的温度,就有如下脚本(cputemp.sh):

#!/bin/bash
echo CPU temperature is $[`cat /sys/class/thermal/thermal_zone0/temp`/1000]
Copier après la connexion

在命令控制台使用watch命令可以做到实时监控

watch -n 1 ./cputemp.sh
Copier après la connexion
Copier après la connexion

执行结果如下:

这样是可以实现实时查看,可是为了数据的延续性,所以我加上了log脚本函数,修改了cputemp.sh脚本,如下:

#!/bin/bash
log(){
#log文件名
local fileName="./$(basename $0 .sh).log"
#log文件最大存储log行数(此处设置最大存储log行数是100行)
local fileMaxLen=100
#超过log最大存储行数后需要从顶部开始删除的行数(此处设置的是删除第1到第10行的数据)
local fileDeleteLen=10
if test $fileName
then
#记录log
echo "[`date +%y/%m/%d-%H:%M:%S`]:$*" >> $fileName
#获取log文件实际行数
loglen=`grep -c "" $fileName`

if [ $loglen -gt $fileMaxLen ]
then
#从顶部开始删除对应行数的log
sed -i '1,'$fileDeleteLen'd' $fileName
fi
else
echo "[`date +%y/%m/%d-%H:%M:%S`]:$*" > $fileName
fi
}




echo CPU temperature is $[`cat /sys/class/thermal/thermal_zone0/temp`/1000]
log $(echo CPU temperature is $[`cat /sys/class/thermal/thermal_zone0/temp`/1000])
Copier après la connexion

使用watch命令循环执行

watch -n 1 ./cputemp.sh
Copier après la connexion
Copier après la connexion

执行在命令控制台的结果和之前是一样的,但是现在在同一个文件目录下会生成一个cputemp.log的文件,查看该文件可以发现CPU的温度信息已记录。

使用cat命令查看cputemp.log

cat ./cputemp.log
Copier après la connexion

得到文件内容,如下

从图中可以看出CPU温度在40-41之间波动。

注意事项

1、不能把watch命令写到cputemp.sh脚本里面

这中间还是有一点不完善的地方是,不能把watch命令写到cputemp.sh脚本里面是比较麻烦的,如果把watch命令写到cputemp.sh脚本里面,就会出现执行的温度信息被固定成一个固定值,不能做到实时查看。

如下:

修改的脚本:

#!/bin/bash
watch -n 1 echo CPU temperature is $[`cat /sys/class/thermal/thermal_zone0/temp`/1000]
Copier après la connexion

执行:

./cputemp.sh
Copier après la connexion

执行结果:

从执行结果中可以看到

$[`cat /sys/class/thermal/thermal_zone0/temp`/1000]
Copier après la connexion

被固定成了40,导致每秒循环只是打印

CPU temperature is 40
Copier après la connexion

而不能达到效果,所以目前只能用命令调用脚本的方式了。

2、单引号内引用变量需要嵌套单引号

在使用 sed 命令时用到了单引号(‘’),单引号内需要引用变量时,需要对引用变量嵌套单引号,不然会报错。

sed -i '1,'$fileDeleteLen'd' $fileName
Copier après la connexion

总结:

目前这种实现方式也满足了基本需求。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment créer un script pour l'édition ? Tutoriel sur la création d'un script via l'édition Comment créer un script pour l'édition ? Tutoriel sur la création d'un script via l'édition Mar 13, 2024 pm 12:46 PM

Cutting est un outil de montage vidéo doté de fonctions d'édition complètes, d'une prise en charge de la vitesse variable, de divers filtres et effets de beauté, ainsi que de riches ressources de bibliothèque musicale. Dans ce logiciel, vous pouvez éditer des vidéos directement ou créer des scripts de montage, mais comment faire ? Dans ce tutoriel, l'éditeur présentera la méthode d'édition et de création de scripts. Méthode de production : 1. Cliquez pour ouvrir le logiciel d'édition sur votre ordinateur, puis recherchez l'option « Script de création » et cliquez pour ouvrir. 2. Dans la page du script créatif, saisissez le « titre du script », puis saisissez une brève introduction au contenu du tournage dans le plan. 3. Comment puis-je voir l'option « Description du storyboard » dans le plan ?

Comment convertir des fichiers ESD au format ISO Comment convertir des fichiers ESD au format ISO Feb 19, 2024 am 08:37 AM

Un fichier esd est un format de compression utilisé dans les systèmes d'exploitation Windows, tandis qu'un fichier ISO est un fichier image disque utilisé pour créer une copie de disque ou un lecteur optique virtuel. Lorsque nous devons convertir des fichiers esd en fichiers iso, cela peut être dû au fait que les fichiers ISO sont plus couramment utilisés et plus faciles à utiliser. Ce qui suit vous présentera quelques méthodes courantes pour terminer ce processus de conversion. Méthode 1 : Utiliser ESDDecrypter ESDDecrypter est un programme spécialement utilisé pour décrypter et convertir les fichiers esd en fichiers iso.

Comment exécuter le fichier .sh sur le système Linux ? Comment exécuter le fichier .sh sur le système Linux ? Mar 14, 2024 pm 06:42 PM

Comment exécuter le fichier .sh sur le système Linux ? Dans les systèmes Linux, un fichier .sh est un fichier appelé script Shell, utilisé pour exécuter une série de commandes. L'exécution de fichiers .sh est une opération très courante. Cet article explique comment exécuter des fichiers .sh dans les systèmes Linux et fournit des exemples de code spécifiques. Méthode 1 : utiliser un chemin absolu pour exécuter un fichier .sh Pour exécuter un fichier .sh dans un système Linux, vous pouvez utiliser un chemin absolu pour spécifier l'emplacement du fichier. Voici les étapes spécifiques : Ouvrez le terminal

Comment supprimer rapidement la ligne à la fin d'un fichier sous Linux Comment supprimer rapidement la ligne à la fin d'un fichier sous Linux Mar 01, 2024 pm 09:36 PM

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.

Secrets du système de fichiers racine Linux Secrets du système de fichiers racine Linux Feb 15, 2024 pm 01:42 PM

Linux est un système d'exploitation open source, portable et personnalisable, largement utilisé dans divers domaines, tels que les serveurs, les ordinateurs de bureau, les appareils embarqués, etc. Le cœur de Linux est le noyau, chargé de gérer les ressources matérielles et de fournir les services de base. Cependant, le noyau n'est pas une entité indépendante et nécessite un système de fichiers pour stocker et accéder à diverses données et programmes. Un système de fichiers est une méthode d'organisation et de gestion de fichiers. Il définit le nom, l'emplacement, les attributs, les autorisations et d'autres informations du fichier. Sous Linux, il existe de nombreux types de systèmes de fichiers, tels que ext4, xfs, btrfs, etc., chacun ayant ses propres caractéristiques et avantages. Cependant, parmi tous les systèmes de fichiers, il existe un système de fichiers spécial, qui constitue la base et le cœur du système Linux, qui est

Pourquoi ne puis-je pas exécuter le fichier bat sous Windows 7 ? Pourquoi ne puis-je pas exécuter le fichier bat sous Windows 7 ? Feb 19, 2024 pm 03:19 PM

Pourquoi Win7 ne peut-il pas exécuter les fichiers bat ? Récemment, de nombreux utilisateurs utilisant le système d'exploitation Windows7 ont signalé qu'ils ne pouvaient pas exécuter les fichiers .bat. Cela a suscité de nombreuses discussions et confusions. Pourquoi un système d'exploitation qui fonctionne bien ne peut-il pas exécuter un simple fichier .bat ? Tout d’abord, nous devons comprendre l’arrière-plan du fichier .bat. Un fichier .bat, également appelé fichier batch, est un fichier texte brut contenant une série de commandes pouvant être utilisées par l'interpréteur de commandes Windows (cmd.ex

Tutoriel de script Windows PowerShell pour les débutants Tutoriel de script Windows PowerShell pour les débutants Mar 13, 2024 pm 10:55 PM

Nous avons conçu ce didacticiel de script Windows PowerShell pour les débutants, que vous soyez un passionné de technologie ou un professionnel cherchant à améliorer vos compétences en matière de script. Si vous n'avez aucune connaissance préalable des scripts PowerShell, cet article commencera par les bases et sera adapté à vos besoins. Nous vous aiderons à maîtriser les étapes d'installation d'un environnement PowerShell et vous guiderons à travers les principaux concepts et fonctionnalités des scripts PowerShell. Si vous êtes prêt à en savoir plus sur les scripts PowerShell, embarquons ensemble dans ce passionnant voyage d'apprentissage ! Qu’est-ce que WindowsPowerShell ? PowerShell est un système de commande hybride développé par Microsoft

Comment automatiser les tâches à l'aide de PowerShell Comment automatiser les tâches à l'aide de PowerShell Feb 20, 2024 pm 01:51 PM

Si vous êtes un administrateur informatique ou un expert en technologie, vous devez être conscient de l'importance de l'automatisation. Surtout pour les utilisateurs de Windows, Microsoft PowerShell est l'un des meilleurs outils d'automatisation. Microsoft propose une variété d'outils pour vos besoins d'automatisation, sans qu'il soit nécessaire d'installer des applications tierces. Ce guide détaillera comment exploiter PowerShell pour automatiser les tâches. Qu'est-ce qu'un script PowerShell ? Si vous avez de l'expérience avec PowerShell, vous avez peut-être utilisé des commandes pour configurer votre système d'exploitation. Un script est une collection de ces commandes dans un fichier .ps1. Les fichiers .ps1 contiennent des scripts exécutés par PowerShell, tels que Get-Help de base

See all articles