Puncte:0

Scrierea unui anumit format de timp într-un fișier text în fiecare minut folosind Cron

drapel br

Sunt destul de nou în Linux. Recent am vrut să învăț cum să lucrez cu Cron. Așa că am scris următoarea linie în fișierul crontab și a funcționat:

* * * * * data >> //home/os/system-date.txt

Această linie va adăuga data și ora curentă în system-date.txt in fiecare minut.

Când rulez următoarea comandă în terminal, ora este tipărită într-un format specific:

data +"%H-%M-%S"

De exemplu, 23-59-59 este tipărită.

Dar când vreau să fac asta cu Cron, nu este scris nimic în fișierul txt. Ca să fiu specific, când scriu următoarea linie în crontab

* * * * * data +"%H-%M-%S" >> //home/os/system-date.txt

nimic nu se intampla. Mă întreb de ce.

FedKad avatar
drapel cn
Este posibil să aveți o eroare de sintaxă pe linia de comandă. Încercați să adăugați `2>>/home/os/cron.err` la sfârșitul intrării crontab pentru a vedea care este eroarea.
Fish_n_Chips avatar
drapel br
Mulțumiri. Am făcut-o, dar nu este creat niciun fișier cron.err. @FedonKadifeli
Puncte:2
drapel cn

Ar trebui să scapi de procent (%) semnează în dvs crontab intrări cu bară oblică inversă (\) ca aceasta:

* * * * * data +"\%H-\%M-\%S" >>/home/os/system-date.txt 2>>/home/os/system-date.err

Semnele de procente au o semnificație specială în crontab intrări: sunt interpretate ca caractere newline. Vă rog, vedeți pagina de manual pentru crontab(5):

Câmpul „al șaselea” (restul liniei) specifică comanda care trebuie executată. Întreaga porțiune de comandă a liniei, până la o nouă linie sau % caracter, va fi executat de /bin/sh sau de shell-ul specificat în variabila SHELL a crontab fişier. Semne de procente (%) în comandă, cu excepția cazului în care a scăpat cu backslash (\), vor fi schimbate în caractere newline și toate datele după prima % va fi trimis la comandă ca intrare standard. Nu există nicio modalitate de a împărți o singură linie de comandă pe mai multe linii, cum ar fi următorul shell "\".

De asemenea, rețineți că comanda din a crontab intrare nu voi fi executat de /bin/bash în mod normal. Deci, este întotdeauna o practică bună să creați un script Bash și să apelați acel script Bash de la crontab. Un alt punct de remarcat este că CALE variabila de mediu este mult mai simplă în a crontab comanda (sau scriptul) executată, așa că este din nou o practică bună de utilizat nume de căi complete pentru comenzile executate într-un script care este scris pentru a fi apelat de crontab.

Puncte:0
drapel cn

Puteți crea un fișier script simplu (adică addDate.sh) precum:

#!/bin/bash
data +"%H-%M-%S" 2>&1 >> //home/os/system-date.txt

The 2>&1 redirecționează erorile și către fișierul de ieșire specificat.

și în crontab rulați acest fișier script.

* * * * * /myscripts/addDate.sh

Unde /myscripts este calea în care ați salvat fișierul 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.