at(1p): Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| Rad 1: | Rad 1: | ||
= | = at(1p) = | ||
== PROLOG == | == PROLOG == | ||
| Rad 7: | Rad 7: | ||
== NAMN == | == NAMN == | ||
''' | '''at''' — kör kommandon vid en senare tidpunkt | ||
== SYNOPSIS == | == SYNOPSIS == | ||
''' | '''at''' '''['''-m'''] ['''-f '''''fil'''''''] ['''-q '''''könamn'''''''] '''-t '''''tidsarg''''''' | ||
'''at''' '''['''-m'''] ['''-f '''''fil'''''''] ['''-q '''''könamn'''''''] '''''tidspec''''''...''' | |||
'''at''' '''-r '''''at_jobb_id''''''...''' | |||
'''at''' '''-l -q '''''könamn''''''' | |||
'''at''' '''-l ['''''at_jobb_id''''''...''']''' | |||
== BESKRIVNING == | == BESKRIVNING == | ||
Verktyget ''at'' ska läsa kommandon från standard input och gruppera dem tillsammans som ett ''at-jobb'', som ska köras vid en senare tidpunkt. | |||
När '' | At-jobbet ska köras i en separat anropning av skalet, i en separat processgrupp utan styrande terminal, förutom att miljövariablerna, aktuell arbetskatalog, filskapandemask, och andra implementationsdefinierade exekveringsattribut som gäller när verktyget ''at'' körs ska behållas och användas när at-jobbet körs. | ||
När at-jobbet skickas in ska ''at_job_id'' och schemalagd tid skrivas till standard error. ''at_job_id'' är en identifierare som ska vara en sträng bestående enbart av alfanumeriska tecken och punkttecknet. ''at_job_id'' ska tilldelas av systemet när jobbet schemaläggs så att det unikt identifierar ett visst jobb. | |||
Användarnotifiering och hantering av jobbets standard output och standard error beskrivs under flaggan '''-m'''. | |||
Användare ska tillåtas använda ''at'' om deras namn finns i filen '''at.allow''' som ligger i en implementationsdefinierad katalog. Om den filen inte finns ska filen '''at.deny''', som ligger i en implementationsdefinierad katalog, kontrolleras för att avgöra om användaren ska nekas åtkomst till ''at''. Om ingen av filerna finns ska endast en process med lämpliga privilegier tillåtas att skicka in ett jobb. Om endast '''at.deny''' finns och är tom ska global användning tillåtas. Filerna '''at.allow''' och '''at.deny''' ska bestå av ett användarnamn per rad. | |||
== FLAGGOR == | == FLAGGOR == | ||
Verktyget '' | Verktyget ''at'' ska följa Base Definitions-volymen i POSIX.1-2017, ''Section 12.2'', ''Utility Syntax Guidelines''. | ||
Följande flaggor ska stödjas: | Följande flaggor ska stödjas: | ||
; '''- | ; '''-f '''''fil''''' | ||
: Ange sökvägen till en fil som ska användas som källa för at-jobbet, i stället för standard input. | |||
; '''- | ; '''-l''' | ||
: Om | : (Bokstaven ell.) Rapportera alla jobb som är schemalagda för den anropande användaren om inga operander av typen '''''at_job_id''''' anges. Om '''''at_job_id''''' anges, rapportera endast information för dessa jobb. Utmatningen ska skrivas till standard output. | ||
; '''- | ; '''-m''' | ||
: | : Skicka e-post till den anropande användaren efter att at-jobbet har körts, och meddela att det har slutförts. Standard output och standard error som produceras av at-jobbet ska också skickas till användaren via e-post, om de inte omdirigeras någon annanstans. E-post ska skickas även om jobbet inte producerar någon utmatning. | ||
: Om '''-m''' inte används ska jobbets standard output och standard error göras tillgängliga för användaren via e-post, om de inte omdirigeras någon annanstans; om det inte finns någon sådan utmatning att tillhandahålla behöver implementationen inte meddela användaren att jobbet har slutförts. | |||
; '''- | ; '''-q '''''könamn''''' | ||
: | : Ange i vilken kö ett jobb ska schemaläggas för insändning. När den används tillsammans med flaggan '''-l''' ska sökningen begränsas till just den kön. Som standard ska at-jobb schemaläggas i kö ''a''. Däremot ska kö ''b'' vara reserverad för batchjobb; se ''batch''. Betydelsen av alla andra '''''könamn''''' är implementationsdefinierad. Om '''-q''' anges tillsammans med antingen '''-t '''''tidsarg''''' eller argument av typen '''''tidspec''''', är resultatet ospecificerat. | ||
; '''- | ; '''-r''' | ||
: | : Ta bort jobben med de angivna operanderna av typen '''''at_job_id''''' som tidigare schemalagts med verktyget ''at''. | ||
; '''-t '''''tidsarg''''' | |||
: Skicka in jobbet för att köras vid den tid som anges av flaggans argument '''''tidsarg''''', som applikationen ska säkerställa har det format som anges av verktyget ''touch'' '''-t time'''. | |||
== OPERANDER == | == OPERANDER == | ||
Följande | Följande operander ska stödjas: | ||
; '''''at_job_id''''' | |||
: Namnet som rapporterades av en tidigare anropning av verktyget ''at'' när jobbet schemalades. | |||
; '''''tidspec''''' | |||
: Skicka in jobbet för att köras vid det datum och den tid som anges. Alla operander av typen '''''tidspec''''' tolkas som om de vore separerade av blanksteg och sammanfogade, och ska parsas enligt grammatiken i slutet av detta avsnitt. Datum och tid ska tolkas enligt användarens tidszon (som bestäms av variabeln ''TZ''), om inte ett tidszonsnamn förekommer som del av ''time'', nedan. | |||
: I POSIX-lokalen beskriver följande de tre delarna av tidspecifikationssträngen. Alla värden från nyckelorden i kategorin ''LC_TIME'' i POSIX-lokalen ska kännas igen utan hänsyn till skiftläge. | |||
; ''''' | : '''''time''''' | ||
: | :: Tiden kan anges med en, två eller fyra siffror. Tal med en eller två siffror ska tolkas som timmar; tal med fyra siffror som timmar och minuter. Tiden kan alternativt anges som två tal separerade med kolon, vilket betyder '''''timme''''':'''''minut'''''. En AM/PM-indikering (ett av värdena från nyckelordet '''am_pm''' i lokalkategorin ''LC_TIME'') kan följa efter tiden; annars ska 24-timmarsklocka antas. Ett tidszonsnamn kan också följa för att ytterligare kvalificera tiden. De godtagbara tidszonsnamnen är implementationsdefinierade, förutom att de ska vara skiftlägesokänsliga och strängen '''utc''' ska stödjas för att ange att tiden är i Coordinated Universal Time. I POSIX-lokalen kan fältet '''''time''''' också vara ett av följande token: | ||
:: '''midnight''' | |||
::: Anger tiden 12:00 am (00:00). | |||
:: '''noon''' | |||
::: Anger tiden 12:00 pm. | |||
:: '''now''' | |||
::: Anger aktuell dag och tid. Att anropa ''at'' <'''now'''> ska skicka in ett at-jobb för potentiellt omedelbar körning (det vill säga, endast beroende av ospecificerade schemaläggningsfördröjningar). | |||
: '''''date''''' | |||
:: Ett valfritt '''''date''''' kan anges antingen som ett månadsnamn (ett av värdena från nyckelorden '''mon''' eller '''abmon''' i lokalkategorin ''LC_TIME'') följt av ett dagnummer (och eventuellt årtal föregånget av komma), eller en veckodag (ett av värdena från nyckelorden '''day''' eller '''abday''' i lokalkategorin ''LC_TIME''). I POSIX-lokalen ska två särskilda dagar kännas igen: | |||
:: '''today''' | |||
::: Anger aktuell dag. | |||
:: '''tomorrow''' | |||
::: Anger dagen efter aktuell dag. | |||
:: Om inget '''''date''''' anges, ska '''today''' antas om den angivna tiden är senare än den aktuella tiden, och '''tomorrow''' ska antas om den är tidigare. Om angiven månad är tidigare än den aktuella månaden (och inget årtal anges), ska nästa år antas. | |||
: '''''increment''''' | |||
:: Den valfria '''''increment''''' ska vara ett tal föregånget av ett plustecken ('''+'') och följt av något av följande: '''minutes''', '''hours''', '''days''', '''weeks''', '''months''' eller '''years'''. (Singularformerna ska också accepteras.) Nyckelordet '''next''' ska vara ekvivalent med increment-talet +1. Exempelvis är följande kommandon likvärdiga: | |||
:: at 2pm + 1 week | |||
:: at 2pm next week | |||
Följande grammatik beskriver det exakta formatet för '''''tidspec''''' i POSIX-lokalen. De allmänna konventionerna för denna grammatikstil beskrivs i ''Section 1.3'', ''Grammar Conventions''. Denna formella syntax ska ha företräde framför den föregående textbeskrivningen av syntaxen. Längsta möjliga token eller avgränsare ska kännas igen vid en given punkt. När blanktecken används i en '''''tidspec''''' ska de också avgränsa token. | |||
%token hr24clock_hr_min | |||
%token hr24clock_hour | |||
/* | |||
An hr24clock_hr_min is a one, two, or four-digit number. A one-digit | |||
or two-digit number constitutes an hr24clock_hour. An hr24clock_hour | |||
may be any of the single digits [0,9], or may be double digits, ranging | |||
from [00,23]. If an hr24clock_hr_min is a four-digit number, the | |||
first two digits shall be a valid hr24clock_hour, while the last two | |||
represent the number of minutes, from [00,59]. | |||
*/ | |||
%token wallclock_hr_min | |||
%token wallclock_hour | |||
/* | |||
A wallclock_hr_min is a one, two-digit, or four-digit number. | |||
A one-digit or two-digit number constitutes a wallclock_hour. | |||
A wallclock_hour may be any of the single digits [1,9], or may | |||
be double digits, ranging from [01,12]. If a wallclock_hr_min | |||
is a four-digit number, the first two digits shall be a valid | |||
wallclock_hour, while the last two represent the number of | |||
minutes, from [00,59]. | |||
*/ | |||
%token minute | |||
/* | |||
A minute is a one or two-digit number whose value can be [0,9] | |||
or [00,59]. | |||
*/ | |||
%token day_number | |||
/* | |||
A day_number is a number in the range appropriate for the particular | |||
month and year specified by month_name and year_number, respectively. | |||
If no year_number is given, the current year is assumed if the given | |||
date and time are later this year. If no year_number is given and | |||
the date and time have already occurred this year and the month is | |||
not the current month, next year is the assumed year. | |||
*/ | |||
%token year_number | |||
/* | |||
A year_number is a four-digit number representing the year A.D., in | |||
which the at_job is to be run. | |||
*/ | |||
%token inc_number | |||
/* | |||
The inc_number is the number of times the succeeding increment | |||
period is to be added to the specified date and time. | |||
*/ | |||
%token timezone_name | |||
/* | |||
The name of an optional timezone suffix to the time field, in an | |||
implementation-defined format. | |||
*/ | |||
%token month_name | |||
/* | |||
One of the values from the mon or abmon keywords in the LC_TIME | |||
locale category. | |||
*/ | |||
%token day_of_week | |||
/* | |||
One of the values from the day or abday keywords in the LC_TIME | |||
locale category. | |||
*/ | |||
%token am_pm | |||
/* | |||
One of the values from the am_pm keyword in the LC_TIME locale | |||
category. | |||
*/ | |||
%start timespec | |||
%% | |||
timespec : time | |||
| time date | |||
| time increment | |||
| time date increment | |||
| nowspec | |||
; | |||
nowspec : "now" | |||
| "now" increment | |||
; | |||
time : hr24clock_hr_min | |||
| hr24clock_hr_min timezone_name | |||
| hr24clock_hour ":" minute | |||
| hr24clock_hour ":" minute timezone_name | |||
| wallclock_hr_min am_pm | |||
| wallclock_hr_min am_pm timezone_name | |||
| wallclock_hour ":" minute am_pm | |||
| wallclock_hour ":" minute am_pm timezone_name | |||
| "noon" | |||
| "midnight" | |||
; | |||
date : month_name day_number | |||
| month_name day_number "," year_number | |||
| day_of_week | |||
| "today" | |||
| "tomorrow" | |||
; | |||
increment : "+" inc_number inc_period | |||
| "next" inc_period | |||
; | |||
inc_period : "minute" | "minutes" | |||
| "hour" | "hours" | |||
| "day" | "days" | |||
| "week" | "weeks" | |||
| "month" | "months" | |||
| "year" | "years" | |||
; | |||
== STDIN == | == STDIN == | ||
Standard input ska vara en textfil bestående av kommandon som accepteras av skalkommandospråket beskrivet i ''Chapter 2'', ''Shell Command Language''. Standard input ska endast användas om ingen flagga av formen '''-f '''''fil''''' anges. | |||
== INDATAFILER == | == INDATAFILER == | ||
Se avsnittet STDIN. | |||
Textfilerna '''at.allow''' och '''at.deny''', som ligger i en implementationsdefinierad katalog, ska innehålla noll eller fler användarnamn, ett per rad, för användare som respektive är auktoriserade eller nekade åtkomst till verktygen ''at'' och ''batch''. | |||
== MILJÖVARIABLER == | == MILJÖVARIABLER == | ||
Följande miljövariabler ska påverka exekveringen av '' | Följande miljövariabler ska påverka exekveringen av ''at'': | ||
; ''LANG'' | ; ''LANG'' | ||
| Rad 71: | Rad 242: | ||
; ''LC_CTYPE'' | ; ''LC_CTYPE'' | ||
: Bestäm lokal för tolkningen av sekvenser av byte i textdata som tecken (till exempel enbyte- i stället för flerbytetecken i argument). | : Bestäm lokal för tolkningen av sekvenser av byte i textdata som tecken (till exempel enbyte- i stället för flerbytetecken i argument och indatafiler). | ||
; ''LC_MESSAGES'' | ; ''LC_MESSAGES'' | ||
: Bestäm lokal som ska användas för att påverka format och innehåll för diagnostiska meddelanden som skrivs till standard error. | : Bestäm lokal som ska användas för att påverka format och innehåll för diagnostiska meddelanden som skrivs till standard error och informativa meddelanden som skrivs till standard output. | ||
; ''NLSPATH'' | ; ''NLSPATH'' | ||
: Bestäm platsen för meddelandekataloger för behandling av ''LC_MESSAGES''. | : Bestäm platsen för meddelandekataloger för behandling av ''LC_MESSAGES''. | ||
; ''LC_TIME'' | |||
: Bestäm format och innehåll för datum- och tidssträngar som skrivs och accepteras av ''at''. | |||
; ''SHELL'' | |||
: Bestäm namnet på en kommandotolk som ska användas för att anropa at-jobbet. Om variabeln är odefinierad eller tom ska ''sh'' användas. Om den är satt till ett annat värde än ett namn för ''sh'', ska implementationen göra ett av följande: använda det skalet; använda ''sh''; använda inloggningsskalet från användardatabasen; eller något av dessa tillsammans med en varningsdiagnostik om vilket som valdes. | |||
; ''TZ'' | |||
: Bestäm tidszonen. Jobbet ska skickas in för körning vid den tid som anges av '''''tidspec''''' eller '''-t '''''time''''' relativt den tidszon som anges av variabeln ''TZ''. Om '''''tidspec''''' anger en tidszon, ska den åsidosätta ''TZ''. Om '''''tidspec''''' inte anger en tidszon och ''TZ'' är odefinierad eller tom, ska en ospecificerad standardtidszon användas. | |||
== ASYNKRONA HÄNDELSER == | == ASYNKRONA HÄNDELSER == | ||
| Rad 85: | Rad 265: | ||
== STDOUT == | == STDOUT == | ||
När standard input är en terminal får promptar i ospecificerat format för varje rad i användarens inmatning som beskrivs i avsnittet STDIN skrivas till standard output. | |||
I POSIX-lokalen ska följande skrivas till standard output för varje jobb när jobb listas som svar på flaggan '''-l''': | |||
"%s\t%s\n", ''at_job_id'', <''datum''> | |||
"% | där ''datum'' ska vara ekvivalent i format med utmatningen från: | ||
date +"%a %b %e %T %Y" | |||
Datum och tid som skrivs ska justeras så att de visas i användarens tidszon (så som den bestäms av variabeln ''TZ''). | |||
== STDERR == | == STDERR == | ||
I POSIX-lokalen ska följande skrivas till standard error när ett jobb har skickats in framgångsrikt: | |||
"job %s at %s\n", ''at_job_id'', <''datum''> | |||
där ''datum'' har samma format som det som beskrivs i avsnittet STDOUT. Varken detta, eller varningsmeddelanden som gäller val av kommandotolk, ska betraktas som diagnostik som ändrar avslutsstatusen. | |||
Diagnostiska meddelanden, om några, ska skrivas till standard error. | |||
== UTDATAFILER == | == UTDATAFILER == | ||
| Rad 106: | Rad 300: | ||
; 0 | ; 0 | ||
: | : Verktyget ''at'' skickade in, tog bort eller listade ett eller flera jobb. | ||
; >0 | ; >0 | ||
| Rad 113: | Rad 307: | ||
== KONSEKVENSER AV FEL == | == KONSEKVENSER AV FEL == | ||
Jobbet ska inte schemaläggas, tas bort eller listas. | |||
''Följande avsnitt är informativa.'' | ''Följande avsnitt är informativa.'' | ||
| Rad 119: | Rad 313: | ||
== ANVÄNDNING == | == ANVÄNDNING == | ||
Formatet på kommandoraden för ''at'' som visas här garanteras endast för POSIX-lokalen. Andra kulturer kan stödjas med väsentligt annorlunda gränssnitt, även om implementationer uppmuntras att tillhandahålla jämförbara funktionsnivåer. | |||
Eftersom kommandona körs i en separat skalanropning, i en separat processgrupp utan styrande terminal, går öppna filbeskrivare, traps och prioritet som ärvts från den anropande miljön förlorade. | |||
Vissa implementationer tillåter inte ersättning med andra skal via ''SHELL''. System V-system har till exempel använt värdet för användarens inloggningsskal i '''/etc/passwd'''. För att pålitligt välja en annan kommandotolk måste användaren inkludera den som del av skriptet, till exempel: | |||
$ at 1800 | |||
myshell myscript | |||
EOT | |||
job ... at ... | |||
$ | |||
== EXEMPEL == | == EXEMPEL == | ||
# Denna sekvens kan användas i en terminal: | |||
#: | |||
#: at -m 0730 tomorrow | |||
#: sort < file >outfile | |||
#: EOT | |||
# Denna sekvens, som demonstrerar omdirigering av standard error till en pipe, är användbar i ett kommandoskript (ordningen på omdirigeringsspecifikationerna är betydelsefull): | |||
#: | |||
#: at now + 1 hour <<! | |||
#: diff file1 file2 2>&1 >outfile | mailx mygroup | |||
#: ! | |||
# För att få ett jobb att schemalägga om sig självt kan ''at'' anropas inifrån at-jobbet. Till exempel kör detta dagliga bearbetningsskript med namnet '''my.daily''' varje dag (även om ''crontab'' är ett mer lämpligt verktyg för sådant arbete): | |||
#: | |||
#: # my.daily runs every day | |||
#: ''daily processing'' | |||
#: at now tomorrow < my.daily | |||
# Avståndet mellan de tre delarna av POSIX-lokalens '''''tidspec''''' är ganska flexibelt så länge det inte uppstår tvetydigheter. Exempel på olika tider och presentationssätt för operander inkluderar: | |||
#: | |||
#: at 0815am Jan 24 | |||
#: at 8 :15amjan24 | |||
#: at now "+ 1day" | |||
#: at 5 pm FRIday | |||
#: at '17 | |||
#: utc+ | |||
#: 30minutes' | |||
== MOTIVERING == | == MOTIVERING == | ||
Verktyget ''at'' läser från standard input de kommandon som ska köras vid en senare tidpunkt. Det kan vara användbart att omdirigera standard output och standard error inom de angivna kommandona. | |||
Flaggan '''- | Flaggan '''-t '''''time''''' lades till som en ny möjlighet för att stödja ett internationaliserat sätt att ange en körtid för det inskickade jobbet. | ||
Tidiga förslag lade till ett begrepp ''jobname'' som ett sätt att ge inskickade jobb namn som är meningsfulla för användaren som skickar in dem. Det historiska, systemangivna ''at_job_id'' ger ingen indikation på vad jobbet är. Efter vidare övervägande beslutades att nyttan med detta inte var värd förändringen av det historiska gränssnittet. Funktionaliteten i ''at'' är användbar i enkla miljöer, men i stora eller komplexa situationer är funktionaliteten i alternativet Batch Services mer lämplig. | |||
Flaggan '''-q''' har historiskt varit en odokumenterad flagga, huvudsakligen använd av verktyget ''batch''. | |||
System V-flaggan '''-m''' lades till för att tillhandahålla ett sätt att informera användare om att ett at-jobb hade slutförts. Annars informeras användare endast när utdata till standard error eller standard output inte omdirigeras. | |||
Beteendet hos ''at'' <'''now'''> ändrades i ett tidigt förslag från att vara ospecificerat till att skicka in ett jobb för potentiellt omedelbar körning. Historiska BSD-implementationer av ''at'' stöder detta. Historiska System V-implementationer ger ett fel i detta fall, men en ändring av System V-versionerna borde inte få några konsekvenser för bakåtkompatibilitet. | |||
På BSD-baserade system har en flagga '''-u '''''user''''' tillåtit användare med lämpliga privilegier att få åtkomst till andra användares arbeten. Eftersom detta främst är en systemadministrativ funktion och inte är universellt implementerad har den utelämnats. På liknande sätt har en specifikation för utdataformatet för en användare med lämpliga privilegier som granskar andra användares köer utelämnats. | |||
Flaggan '''-f '''''fil''''' från System V används i stället för BSD-metoden att använda den sista operanden som sökväg. BSD-metoden är tvetydig — betyder: | |||
at 1200 friday | |||
samma sak om det finns en fil med namnet '''friday''' i aktuell katalog? | |||
''at_job_id'' består av en begränsad teckenuppsättning i historisk praxis, och detta krävs här för att ogiltigförklara system som annars skulle kunna försöka använda tecken som kräver skal-citering eller som inte enkelt kan parsas av skalskript. | |||
Verktyget ''at'' skiljer sig mellan System V- och BSD-system i hur tidszoner används. På System V-system påverkar variabeln ''TZ'' tiderna för insändning av at-jobb och de tider som visas för användaren. På BSD-system tas ''TZ'' inte med i beräkningen. BSD-beteendet kan enkelt uppnås med den aktuella specifikationen. Om användaren vill att tidszonen ska vara systemets standard behöver denne bara köra kommandot ''at'' omedelbart efter att ''TZ'' avsatts eller satts till tomt. Till exempel: | |||
TZ= at noon ... | |||
ger det önskade BSD-resultatet. | |||
Även om den ''yacc''-liknande grammatiken som anges i avsnittet OPERANDER är lexikalt entydig med avseende på siffersträngarna, skulle en lexikal analysator sannolikt skrivas för att hitta och returnera siffersträngar i dessa fall. Parsaren kan sedan kontrollera om siffersträngen som returneras är ett giltigt '''''day_number''''', '''''year_number''''', och så vidare, beroende på sammanhanget. | |||
== FRAMTIDA UTVECKLING == | == FRAMTIDA UTVECKLING == | ||
Ingen. | |||
== SE ÄVEN == | == SE ÄVEN == | ||
'' | ''batch''(1p), ''crontab''(1p) | ||
Base Definitions-volymen i POSIX.1-2017, ''Chapter 8'', ''Environment Variables'', ''Section 12.2'', ''Utility Syntax Guidelines'' | Base Definitions-volymen i POSIX.1-2017, ''Chapter 8'', ''Environment Variables'', ''Section 12.2'', ''Utility Syntax Guidelines'' | ||
== COPYRIGHT == | == COPYRIGHT == | ||
| Rad 156: | Rad 402: | ||
Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har sannolikt introducerats under konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se https://www.kernel.org/doc/man-pages/reporting_bugs.html . | Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har sannolikt introducerats under konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se https://www.kernel.org/doc/man-pages/reporting_bugs.html . | ||
= Sidslut = | = Sidslut = | ||
Nuvarande version från 18 april 2026 kl. 16.41
at(1p)
PROLOG
Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig (se motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kanske gränssnittet inte är implementerat på Linux.
NAMN
at — kör kommandon vid en senare tidpunkt
SYNOPSIS
at [-m] [-f fil''] [-q könamn''] -t tidsarg''
at [-m] [-f fil''] [-q könamn''] tidspec'...
at -r at_jobb_id'...
at -l -q könamn''
at -l [at_jobb_id'...]
BESKRIVNING
Verktyget at ska läsa kommandon från standard input och gruppera dem tillsammans som ett at-jobb, som ska köras vid en senare tidpunkt.
At-jobbet ska köras i en separat anropning av skalet, i en separat processgrupp utan styrande terminal, förutom att miljövariablerna, aktuell arbetskatalog, filskapandemask, och andra implementationsdefinierade exekveringsattribut som gäller när verktyget at körs ska behållas och användas när at-jobbet körs.
När at-jobbet skickas in ska at_job_id och schemalagd tid skrivas till standard error. at_job_id är en identifierare som ska vara en sträng bestående enbart av alfanumeriska tecken och punkttecknet. at_job_id ska tilldelas av systemet när jobbet schemaläggs så att det unikt identifierar ett visst jobb.
Användarnotifiering och hantering av jobbets standard output och standard error beskrivs under flaggan -m.
Användare ska tillåtas använda at om deras namn finns i filen at.allow som ligger i en implementationsdefinierad katalog. Om den filen inte finns ska filen at.deny, som ligger i en implementationsdefinierad katalog, kontrolleras för att avgöra om användaren ska nekas åtkomst till at. Om ingen av filerna finns ska endast en process med lämpliga privilegier tillåtas att skicka in ett jobb. Om endast at.deny finns och är tom ska global användning tillåtas. Filerna at.allow och at.deny ska bestå av ett användarnamn per rad.
FLAGGOR
Verktyget at ska följa Base Definitions-volymen i POSIX.1-2017, Section 12.2, Utility Syntax Guidelines.
Följande flaggor ska stödjas:
- -f fil
- Ange sökvägen till en fil som ska användas som källa för at-jobbet, i stället för standard input.
- -l
- (Bokstaven ell.) Rapportera alla jobb som är schemalagda för den anropande användaren om inga operander av typen at_job_id anges. Om at_job_id anges, rapportera endast information för dessa jobb. Utmatningen ska skrivas till standard output.
- -m
- Skicka e-post till den anropande användaren efter att at-jobbet har körts, och meddela att det har slutförts. Standard output och standard error som produceras av at-jobbet ska också skickas till användaren via e-post, om de inte omdirigeras någon annanstans. E-post ska skickas även om jobbet inte producerar någon utmatning.
- Om -m inte används ska jobbets standard output och standard error göras tillgängliga för användaren via e-post, om de inte omdirigeras någon annanstans; om det inte finns någon sådan utmatning att tillhandahålla behöver implementationen inte meddela användaren att jobbet har slutförts.
- -q könamn
- Ange i vilken kö ett jobb ska schemaläggas för insändning. När den används tillsammans med flaggan -l ska sökningen begränsas till just den kön. Som standard ska at-jobb schemaläggas i kö a. Däremot ska kö b vara reserverad för batchjobb; se batch. Betydelsen av alla andra könamn är implementationsdefinierad. Om -q anges tillsammans med antingen -t tidsarg eller argument av typen tidspec, är resultatet ospecificerat.
- -r
- Ta bort jobben med de angivna operanderna av typen at_job_id som tidigare schemalagts med verktyget at.
- -t tidsarg
- Skicka in jobbet för att köras vid den tid som anges av flaggans argument tidsarg, som applikationen ska säkerställa har det format som anges av verktyget touch -t time.
OPERANDER
Följande operander ska stödjas:
- at_job_id
- Namnet som rapporterades av en tidigare anropning av verktyget at när jobbet schemalades.
- tidspec
- Skicka in jobbet för att köras vid det datum och den tid som anges. Alla operander av typen tidspec tolkas som om de vore separerade av blanksteg och sammanfogade, och ska parsas enligt grammatiken i slutet av detta avsnitt. Datum och tid ska tolkas enligt användarens tidszon (som bestäms av variabeln TZ), om inte ett tidszonsnamn förekommer som del av time, nedan.
- I POSIX-lokalen beskriver följande de tre delarna av tidspecifikationssträngen. Alla värden från nyckelorden i kategorin LC_TIME i POSIX-lokalen ska kännas igen utan hänsyn till skiftläge.
- time
- Tiden kan anges med en, två eller fyra siffror. Tal med en eller två siffror ska tolkas som timmar; tal med fyra siffror som timmar och minuter. Tiden kan alternativt anges som två tal separerade med kolon, vilket betyder timme:minut. En AM/PM-indikering (ett av värdena från nyckelordet am_pm i lokalkategorin LC_TIME) kan följa efter tiden; annars ska 24-timmarsklocka antas. Ett tidszonsnamn kan också följa för att ytterligare kvalificera tiden. De godtagbara tidszonsnamnen är implementationsdefinierade, förutom att de ska vara skiftlägesokänsliga och strängen utc ska stödjas för att ange att tiden är i Coordinated Universal Time. I POSIX-lokalen kan fältet time också vara ett av följande token:
- midnight
- Anger tiden 12:00 am (00:00).
- midnight
- noon
- Anger tiden 12:00 pm.
- noon
- now
- Anger aktuell dag och tid. Att anropa at <now> ska skicka in ett at-jobb för potentiellt omedelbar körning (det vill säga, endast beroende av ospecificerade schemaläggningsfördröjningar).
- now
- date
- Ett valfritt date kan anges antingen som ett månadsnamn (ett av värdena från nyckelorden mon eller abmon i lokalkategorin LC_TIME) följt av ett dagnummer (och eventuellt årtal föregånget av komma), eller en veckodag (ett av värdena från nyckelorden day eller abday i lokalkategorin LC_TIME). I POSIX-lokalen ska två särskilda dagar kännas igen:
- today
- Anger aktuell dag.
- today
- tomorrow
- Anger dagen efter aktuell dag.
- tomorrow
- Om inget date anges, ska today antas om den angivna tiden är senare än den aktuella tiden, och tomorrow ska antas om den är tidigare. Om angiven månad är tidigare än den aktuella månaden (och inget årtal anges), ska nästa år antas.
- increment
- Den valfria increment ska vara ett tal föregånget av ett plustecken ('+) och följt av något av följande: minutes, hours, days, weeks, months eller years. (Singularformerna ska också accepteras.) Nyckelordet next ska vara ekvivalent med increment-talet +1. Exempelvis är följande kommandon likvärdiga:
- at 2pm + 1 week
- at 2pm next week
Följande grammatik beskriver det exakta formatet för tidspec i POSIX-lokalen. De allmänna konventionerna för denna grammatikstil beskrivs i Section 1.3, Grammar Conventions. Denna formella syntax ska ha företräde framför den föregående textbeskrivningen av syntaxen. Längsta möjliga token eller avgränsare ska kännas igen vid en given punkt. När blanktecken används i en tidspec ska de också avgränsa token.
%token hr24clock_hr_min %token hr24clock_hour /* An hr24clock_hr_min is a one, two, or four-digit number. A one-digit or two-digit number constitutes an hr24clock_hour. An hr24clock_hour may be any of the single digits [0,9], or may be double digits, ranging from [00,23]. If an hr24clock_hr_min is a four-digit number, the first two digits shall be a valid hr24clock_hour, while the last two represent the number of minutes, from [00,59]. */
%token wallclock_hr_min %token wallclock_hour /* A wallclock_hr_min is a one, two-digit, or four-digit number. A one-digit or two-digit number constitutes a wallclock_hour. A wallclock_hour may be any of the single digits [1,9], or may be double digits, ranging from [01,12]. If a wallclock_hr_min is a four-digit number, the first two digits shall be a valid wallclock_hour, while the last two represent the number of minutes, from [00,59]. */
%token minute /* A minute is a one or two-digit number whose value can be [0,9] or [00,59]. */
%token day_number /* A day_number is a number in the range appropriate for the particular month and year specified by month_name and year_number, respectively. If no year_number is given, the current year is assumed if the given date and time are later this year. If no year_number is given and the date and time have already occurred this year and the month is not the current month, next year is the assumed year. */
%token year_number /* A year_number is a four-digit number representing the year A.D., in which the at_job is to be run. */
%token inc_number /* The inc_number is the number of times the succeeding increment period is to be added to the specified date and time. */
%token timezone_name /* The name of an optional timezone suffix to the time field, in an implementation-defined format. */
%token month_name /* One of the values from the mon or abmon keywords in the LC_TIME locale category. */
%token day_of_week /* One of the values from the day or abday keywords in the LC_TIME locale category. */
%token am_pm /* One of the values from the am_pm keyword in the LC_TIME locale category. */
%start timespec
%%
timespec : time
| time date
| time increment
| time date increment
| nowspec
;
nowspec : "now"
| "now" increment
;
time : hr24clock_hr_min
| hr24clock_hr_min timezone_name
| hr24clock_hour ":" minute
| hr24clock_hour ":" minute timezone_name
| wallclock_hr_min am_pm
| wallclock_hr_min am_pm timezone_name
| wallclock_hour ":" minute am_pm
| wallclock_hour ":" minute am_pm timezone_name
| "noon"
| "midnight"
;
date : month_name day_number
| month_name day_number "," year_number
| day_of_week
| "today"
| "tomorrow"
;
increment : "+" inc_number inc_period
| "next" inc_period
;
inc_period : "minute" | "minutes"
| "hour" | "hours"
| "day" | "days"
| "week" | "weeks"
| "month" | "months"
| "year" | "years"
;
STDIN
Standard input ska vara en textfil bestående av kommandon som accepteras av skalkommandospråket beskrivet i Chapter 2, Shell Command Language. Standard input ska endast användas om ingen flagga av formen -f fil anges.
INDATAFILER
Se avsnittet STDIN.
Textfilerna at.allow och at.deny, som ligger i en implementationsdefinierad katalog, ska innehålla noll eller fler användarnamn, ett per rad, för användare som respektive är auktoriserade eller nekade åtkomst till verktygen at och batch.
MILJÖVARIABLER
Följande miljövariabler ska påverka exekveringen av at:
- LANG
- Ange ett standardvärde för internationaliseringsvariabler som är odefinierade eller tomma. (Se Base Definitions-volymen i POSIX.1-2017, Section 8.2, Internationalization Variables för prioritetsordningen för internationaliseringsvariabler som används för att bestämma värdena för lokalkategorier.)
- LC_ALL
- Om satt till en icke-tom sträng, åsidosätt värdena för alla andra internationaliseringsvariabler.
- LC_CTYPE
- Bestäm lokal för tolkningen av sekvenser av byte i textdata som tecken (till exempel enbyte- i stället för flerbytetecken i argument och indatafiler).
- LC_MESSAGES
- Bestäm lokal som ska användas för att påverka format och innehåll för diagnostiska meddelanden som skrivs till standard error och informativa meddelanden som skrivs till standard output.
- NLSPATH
- Bestäm platsen för meddelandekataloger för behandling av LC_MESSAGES.
- LC_TIME
- Bestäm format och innehåll för datum- och tidssträngar som skrivs och accepteras av at.
- SHELL
- Bestäm namnet på en kommandotolk som ska användas för att anropa at-jobbet. Om variabeln är odefinierad eller tom ska sh användas. Om den är satt till ett annat värde än ett namn för sh, ska implementationen göra ett av följande: använda det skalet; använda sh; använda inloggningsskalet från användardatabasen; eller något av dessa tillsammans med en varningsdiagnostik om vilket som valdes.
- TZ
- Bestäm tidszonen. Jobbet ska skickas in för körning vid den tid som anges av tidspec eller -t time relativt den tidszon som anges av variabeln TZ. Om tidspec anger en tidszon, ska den åsidosätta TZ. Om tidspec inte anger en tidszon och TZ är odefinierad eller tom, ska en ospecificerad standardtidszon användas.
ASYNKRONA HÄNDELSER
Standard.
STDOUT
När standard input är en terminal får promptar i ospecificerat format för varje rad i användarens inmatning som beskrivs i avsnittet STDIN skrivas till standard output.
I POSIX-lokalen ska följande skrivas till standard output för varje jobb när jobb listas som svar på flaggan -l:
"%s\t%s\n", at_job_id, <datum>
där datum ska vara ekvivalent i format med utmatningen från:
date +"%a %b %e %T %Y"
Datum och tid som skrivs ska justeras så att de visas i användarens tidszon (så som den bestäms av variabeln TZ).
STDERR
I POSIX-lokalen ska följande skrivas till standard error när ett jobb har skickats in framgångsrikt:
"job %s at %s\n", at_job_id, <datum>
där datum har samma format som det som beskrivs i avsnittet STDOUT. Varken detta, eller varningsmeddelanden som gäller val av kommandotolk, ska betraktas som diagnostik som ändrar avslutsstatusen.
Diagnostiska meddelanden, om några, ska skrivas till standard error.
UTDATAFILER
Inga.
UTVIDGAD BESKRIVNING
Ingen.
AVSLUTSSTATUS
Följande avslutsvärden ska returneras:
- 0
- Verktyget at skickade in, tog bort eller listade ett eller flera jobb.
- >0
- Ett fel inträffade.
KONSEKVENSER AV FEL
Jobbet ska inte schemaläggas, tas bort eller listas.
Följande avsnitt är informativa.
ANVÄNDNING
Formatet på kommandoraden för at som visas här garanteras endast för POSIX-lokalen. Andra kulturer kan stödjas med väsentligt annorlunda gränssnitt, även om implementationer uppmuntras att tillhandahålla jämförbara funktionsnivåer.
Eftersom kommandona körs i en separat skalanropning, i en separat processgrupp utan styrande terminal, går öppna filbeskrivare, traps och prioritet som ärvts från den anropande miljön förlorade.
Vissa implementationer tillåter inte ersättning med andra skal via SHELL. System V-system har till exempel använt värdet för användarens inloggningsskal i /etc/passwd. För att pålitligt välja en annan kommandotolk måste användaren inkludera den som del av skriptet, till exempel:
$ at 1800 myshell myscript EOT job ... at ... $
EXEMPEL
- Denna sekvens kan användas i en terminal:
- at -m 0730 tomorrow
- sort < file >outfile
- EOT
- Denna sekvens, som demonstrerar omdirigering av standard error till en pipe, är användbar i ett kommandoskript (ordningen på omdirigeringsspecifikationerna är betydelsefull):
- at now + 1 hour <<!
- diff file1 file2 2>&1 >outfile | mailx mygroup
- !
- För att få ett jobb att schemalägga om sig självt kan at anropas inifrån at-jobbet. Till exempel kör detta dagliga bearbetningsskript med namnet my.daily varje dag (även om crontab är ett mer lämpligt verktyg för sådant arbete):
- # my.daily runs every day
- daily processing
- at now tomorrow < my.daily
- Avståndet mellan de tre delarna av POSIX-lokalens tidspec är ganska flexibelt så länge det inte uppstår tvetydigheter. Exempel på olika tider och presentationssätt för operander inkluderar:
- at 0815am Jan 24
- at 8 :15amjan24
- at now "+ 1day"
- at 5 pm FRIday
- at '17
- utc+
- 30minutes'
MOTIVERING
Verktyget at läser från standard input de kommandon som ska köras vid en senare tidpunkt. Det kan vara användbart att omdirigera standard output och standard error inom de angivna kommandona.
Flaggan -t time lades till som en ny möjlighet för att stödja ett internationaliserat sätt att ange en körtid för det inskickade jobbet.
Tidiga förslag lade till ett begrepp jobname som ett sätt att ge inskickade jobb namn som är meningsfulla för användaren som skickar in dem. Det historiska, systemangivna at_job_id ger ingen indikation på vad jobbet är. Efter vidare övervägande beslutades att nyttan med detta inte var värd förändringen av det historiska gränssnittet. Funktionaliteten i at är användbar i enkla miljöer, men i stora eller komplexa situationer är funktionaliteten i alternativet Batch Services mer lämplig.
Flaggan -q har historiskt varit en odokumenterad flagga, huvudsakligen använd av verktyget batch.
System V-flaggan -m lades till för att tillhandahålla ett sätt att informera användare om att ett at-jobb hade slutförts. Annars informeras användare endast när utdata till standard error eller standard output inte omdirigeras.
Beteendet hos at <now> ändrades i ett tidigt förslag från att vara ospecificerat till att skicka in ett jobb för potentiellt omedelbar körning. Historiska BSD-implementationer av at stöder detta. Historiska System V-implementationer ger ett fel i detta fall, men en ändring av System V-versionerna borde inte få några konsekvenser för bakåtkompatibilitet.
På BSD-baserade system har en flagga -u user tillåtit användare med lämpliga privilegier att få åtkomst till andra användares arbeten. Eftersom detta främst är en systemadministrativ funktion och inte är universellt implementerad har den utelämnats. På liknande sätt har en specifikation för utdataformatet för en användare med lämpliga privilegier som granskar andra användares köer utelämnats.
Flaggan -f fil från System V används i stället för BSD-metoden att använda den sista operanden som sökväg. BSD-metoden är tvetydig — betyder:
at 1200 friday
samma sak om det finns en fil med namnet friday i aktuell katalog?
at_job_id består av en begränsad teckenuppsättning i historisk praxis, och detta krävs här för att ogiltigförklara system som annars skulle kunna försöka använda tecken som kräver skal-citering eller som inte enkelt kan parsas av skalskript.
Verktyget at skiljer sig mellan System V- och BSD-system i hur tidszoner används. På System V-system påverkar variabeln TZ tiderna för insändning av at-jobb och de tider som visas för användaren. På BSD-system tas TZ inte med i beräkningen. BSD-beteendet kan enkelt uppnås med den aktuella specifikationen. Om användaren vill att tidszonen ska vara systemets standard behöver denne bara köra kommandot at omedelbart efter att TZ avsatts eller satts till tomt. Till exempel:
TZ= at noon ...
ger det önskade BSD-resultatet.
Även om den yacc-liknande grammatiken som anges i avsnittet OPERANDER är lexikalt entydig med avseende på siffersträngarna, skulle en lexikal analysator sannolikt skrivas för att hitta och returnera siffersträngar i dessa fall. Parsaren kan sedan kontrollera om siffersträngen som returneras är ett giltigt day_number, year_number, och så vidare, beroende på sammanhanget.
FRAMTIDA UTVECKLING
Ingen.
SE ÄVEN
batch(1p), crontab(1p)
Base Definitions-volymen i POSIX.1-2017, Chapter 8, Environment Variables, Section 12.2, Utility Syntax Guidelines
COPYRIGHT
Delar av denna text återges och reproduceras i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute of Electrical and Electronics Engineers, Inc och The Open Group. Vid varje avvikelse mellan denna version och den ursprungliga IEEE- och The Open Group-standarden är den ursprungliga IEEE- och The Open Group-standarden det styrande dokumentet. Originalstandarden kan erhållas online på http://www.opengroup.org/unix/online.html .
Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har sannolikt introducerats under konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se https://www.kernel.org/doc/man-pages/reporting_bugs.html .
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/at.1p.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorservice som har sponsrat Linux.se med webbhotell.