Come posso ibernare / sospendere dalla riga di comando e farlo in un momento specifico


36

Sono riuscito a scoprire come sospendere / ibernare il sistema dalla riga di comando leggendo Come posso sospendere / ibernare dalla riga di comando? .

Tuttavia, vorrei sapere come utilizzare la riga di comando per sospendere / ibernare in un determinato momento, in termini assoluti (esempio, 23:00) o relativi (esempio, in 30 minuti).

So già come farlo con l'arresto, ma sono sicuro che il comando è simile.

Risposte:


43

È possibile utilizzare il atcomando per pianificare qualsiasi azione, incluso l'esecuzione dei comandi dettagliati in quella domanda .

Ad esempio, se si desidera andare in letargo in 30 minuti:

echo 'pmi action hibernate' | at now + 30 min

O se vuoi sospendere alle 23:00:

echo 'pmi action suspend' | at 11pm

Se è necessario eseguire un comando come root, eseguire atcon sudoanziché il comando stesso con sudo(poiché sudodovrebbe essere eseguito solo in modo interattivo, a meno che non sia stato configurato per non richiedere la password). Ad esempio, gli equivalenti dei comandi sopra usando pm-hibernatee pm-suspendsono:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


Grazie per aver scoperto che entrambe le situazioni sono state richieste ... Ho modificato il titolo per riflettere anche questo. Ho modificato la mia risposta per includere entrambe le situazioni ora.
cprofitt,

Qualche idea su come posso cancellare i lavori?
KhoPhi,

2
@Rexford Il atrmcomando rimuove i lavori creati da at.
Eliah Kagan,

9

Per le specifiche relative (ad es. "Dopo 30 minuti") è possibile semplicemente utilizzare il sleepcomando per far attendere il comando di sospensione / ibernazione.


Esempi:

Attendi 30 minuti, quindi sospendi:

sudo sleep 30m; sudo pm-suspend

Attendere 1 ora, quindi ibernare:

sudo sleep 1h; sudo pm-hibernate

Mi piace anche questo approccio.
KhoPhi,

2
Dopo 1h si pm-hibernatedesidera nuovamente una password per root e la sospensione non si verifica.
Vitaly Zdanevich,

che ne dite di accedere come root per evitare di ricevere una password?
banan3'14,

4

Per periodi specifici ripetuti, ad esempio lo spegnimento dei computer è un orario specifico ogni giorno. usa cron.

crontab -e

aggiungere quanto segue:

15 14 1 * * pmi action suspend

Se vuoi personalizzarlo.

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Per un lavoro di una volta noi il comando at

Ad esempio, se si desidera andare in letargo in 30 minuti:

echo 'pmi action hibernate' | at now + 30 min

O se vuoi sospendere alle 23:00:

echo 'pmi action suspend' | at 11pm

2
L'utilizzo cronè una buona soluzione quando l'obiettivo è sospendere o ibernare in un momento specifico del giorno o in un momento specifico in un giorno specifico della settimana, o mese o anno. Ma per programmare una singola sospensione o ibernazione, che sembra essere ciò di cui Ederico stava chiedendo (e che è qualcosa che ha molto più senso voler fare), il atcomando dovrebbe essere usato. (Puoi pianificare un singolo evento cronfacendo in modo che l'evento modifichi il crontab pertinente, ad esempio usando sedo awk, ma è estremamente complesso e non necessario; usa at.)
Eliah Kagan

Non si adatta ai termini relativi richiesti dalla domanda, è utile solo per programmi specifici.
Bruno Pereira,

Sì, questo è stato un esempio di "orario specifico" richiesto. "Tuttavia, vorrei sapere come utilizzare la riga di comando per sospendere / ibernare in un determinato momento, in assoluto (esempio, 23:00)"
cprofitt,

1
Hai modificato la tua risposta per aggiungere informazioni su come utilizzare at, ma purtroppo le informazioni che hai aggiunto non sono corrette. L' <operatore reindirizza il testo dal file o dal dispositivo specificato alla sua destra all'input standard per il comando specificato alla sua sinistra. Se volessi usare <invece di |(come nella mia risposta ), dovresti creare un file con pmi action suspend(o pmi action hibernate) come contenuto. Tale complessità |qui migliora.
Eliah Kagan,

Come linea guida generale, quando hai un catcomando a sinistra di un |(ad esempio cat foo | bar), puoi sostituirlo con <un'espressione ( bar < foo). Ma quando hai un echocomando alla sinistra di a |, questo non può essere banalmente sostituito con <un'espressione.
Eliah Kagan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.