Puncte:2

Problemă de comandă de urmărire, problemă de script Bash sau problemă de sistem?

drapel in

Am scris un script bash simplu numit scrie-data.sh care pur și simplu scrie data într-un fișier:

#!/bin/bash

echo "$(data) Scriere gata" >> write-date.log

Și rulez scriptul bash la fiecare 60 de secunde astfel:

ceas -n 60 ./write-date.sh

Cu toate acestea, când rulez comanda, rezultatul este produs în fișierul scrie-data.log fișierul conține rezultate ca în fragmentul de aici:

Joi, 1 iulie 09:42:03 BST 2021 Scrieți gata
Joi, 1 iulie 09:42:03 BST 2021 Scrieți gata
Joi, 1 iulie 09:42:03 BST 2021 Scrieți gata
Joi, 1 iulie 09:42:03 BST 2021 Scrieți gata
Joi, 1 iulie 09:42:03 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:42:04 BST 2021 Scrieți gata
Joi 1 iulie 09:43:04 BST 2021 Scrieți gata
Joi 1 iulie 09:43:26 BST 2021 Scrieți gata
Joi 1 iulie 09:44:26 BST 2021 Scrieți gata
Joi 1 iulie 09:45:26 BST 2021 Scrieți gata
Joi 1 iulie 09:46:26 BST 2021 Scrieți gata
Joi 1 iulie 09:47:26 BST 2021 Scrieți gata
Joi 1 iulie 09:48:26 BST 2021 Scrieți gata

După cum se poate vedea, există momente în care data este scrisă în fișierul jurnal de mai multe ori pe minut (la 09:42 și 09:43 în acest fragment de exemplu) și nu văd de ce ar putea fi asta... comanda ceasului este greșită? Este scriptul bash în sine greșit? Există o problemă cu ceasul sistemului undeva?

Sistemul de operare este Ubuntu 20.04 unde uname -a este:

Mașină Linux 5.4.0-77-generic #86-Ubuntu SMP Joi 17 iunie 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

De asemenea, ar trebui să subliniez că motivul pentru acest script este că am o problemă în care sistemul de fișiere rădăcină al sistemului de operare intră în modul doar citire la câteva ore sau uneori la câteva zile și așa că încerc să aflu ziua și ora. când se întâmplă asta, ca să mă pot uita mai târziu /var/log/syslog cam în acel moment pentru a vedea dacă ceva ciudat s-a întâmplat cu sistemul la momentul respectiv.

--- ACTUALIZAȚI ---

Ați oprit executarea comenzii și ați șters fișierul jurnal și ați reluat comanda din nou de la zero, iar acum data este înregistrată o dată pe minut, așa cum ne-ați aștepta.

După cum s-a subliniat în comentarii, jurnalele duplicate tipărite ar putea fi dintr-o rulare anterioară de script dus (probabil o eroare de utilizator), dar nu mă pot gândi cum sau când s-ar fi putut întâmpla acest lucru. Oricum, va continua să ruleze ore/zile, așa că va fi cu ochii pe el.

muru avatar
drapel us
**Adăugați** (`>>`) la jurnal. Sunteți sigur că acele intrări înainte de `09:43:26` nu erau deja acolo înainte de a începe `vizionați`? Nu există `09:23` în eșantion.
Going Bananas avatar
drapel in
@muru Ne pare rău, ora 09:23 a fost o greșeală de tipar care ar fi trebuit să spună 09:42. Voi edita postarea pentru a corecta greșeala de scriere... De asemenea, de atunci am șters fișierul și am rulat din nou de la zero și acum scrie doar o dată pe secundă, așa cum ne-am aștepta, așa că poate că erau date învechite de la un echivoc anterior scriptul rulează, dar nu mă pot gândi când s-ar fi putut întâmpla asta, dar indică o eroare a utilizatorului. Voi continua să rulez diferite rulări pentru o vreme, să văd dacă problema reapare. va adăuga acest detaliu și în postare.
muru avatar
drapel us
Stai, încă se înregistrează o dată pe **sec**? Nu o dată pe minut?
Going Bananas avatar
drapel in
Scuze @muru. O altă greșeală de tipar. Am vrut să scriu o dată pe minut. voi corecta in postare...
FedKad avatar
drapel cn
Probabil rulați mai multe copii ale scriptului (probabil în fundal sau alt terminal). Aș face `ps -ef | grep my_script_name` și `kill` orice versiune care rulează, înainte de a porni una nouă.
Going Bananas avatar
drapel in
@FedonKadifeli Am verificat asta ca o posibilitate la momentul respectiv, dar exista doar un singur script care rulează. De asemenea, dacă rulează n scripturi, atunci fiecare dată scrisă ar apărea de exact de n ori, ceea ce nu a fost cazul, așa cum se poate vedea în fragmentul de jurnal postat
FedKad avatar
drapel cn
O corecție, îmi pare rău: aș opri orice proces „watch”, nu doar un proces cu numele dvs. de script...
FedKad avatar
drapel cn
O altă posibilitate este că ați introdus „0” în loc de „60”. În acest caz, „watch” va folosi o întârziere de 0,1 secunde, ceea ce explică de ce vedeți zece intrări pe secundă în fișierul de ieșire.Vă rugăm să vă uitați la comanda dvs. `istory` a lui Bash pentru a verifica.
Going Bananas avatar
drapel in
Chestia este că doar uneori scria date în fișier de mai multe ori pe minut în timpul aceleiași rulări de script.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.