Linux belirli bir tarihte terminalden nasıl kapatılır?


46

sudo shutdownBir süre veya dakika belirterek bunu kapatabilirim gibi görünüyor .

Kapatma için tarih saatini belirtmenin bir yolu var mı?

Yanıtlar:


77

Bunu doğrudan yapabilirsiniz shutdown command, bkz man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

Yani, örneğin:

shutdown -h 21:45

Bu shutdown -h21:45 de çalışacak .


Bu işlevi sunmayan komutlar için şunlardan birini deneyebilirsiniz:

A. kullanarak

atCin tam da bu için tasarlanmıştır. İşletim sisteminize bağlı olarak yüklemeniz gerekebilir. Debian tabanlı sistemlerde, bu yapılabilir:

sudo apt-get install at

Komut vermenin üç yolu vardır at:

  1. Pipo:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. Çalıştırmak istediğiniz komutu bir metin dosyasına kaydedin ve bu dosyayı aşağıdakilere iletin at:

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. atKomutları STDIN'den de geçebilirsiniz :

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    Ardından, kabuktan CtrlDçıkmak için tuşuna basın at. lsKomut bir dakika içinde çalışacaktır.

Biçiminde çok kesin zamanlar verebilirsiniz [[CC]YY]MMDDhhmm[.ss].

$ at -t 201403142134.12 < script.sh

Bu senaryoyu script.sh14 Mart 2014 tarihinde 21:34 ve 12 saniyede çalıştıracak .

B. cron kullanımı (bu kapatma için iyi bir fikir olmasa da)

Diğer yaklaşım, cronbelirli zamanlarda görevleri gerçekleştirmek için tasarlanmış zamanlayıcı kullanmaktır . Genellikle tekrarlanacak işler için kullanılır, ancak belirli bir zaman da verebilirsiniz. Her kullanıcının hangi işlerin ne zaman ve ne zaman yürütüleceğini kontrol eden kendi "crontab'ları" vardır. Bir crontab'ın genel formatı şudur:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

Örneğin, bu lsher gün saat 14: 04'te çalışacak :

04 14 * * * ls

Belirli bir tarih için bir cronjob ayarlamak için:

  1. Çalıştırarak yeni bir crontab oluşturun crontab -e. Bu, favori metin editörünün bir penceresini açacaktır.

  2. Bu satırı yeni açılan dosyaya ekleyin. Bu özel örnek, 15 Mart 2014 günü saat 14: 34'te, o gün Cumaysa (yani, tamam, birden fazla kez çalışabilir) çalışacaktır:

    34 14 15 5  /path/to/command        
    
  3. Dosyayı kaydedin ve editörden çıkın.

Bu SO cevabı sadece bir kez çalışmasını sağlamak için bir yol sunuyor, ancak hiç kullanmadım, bu yüzden buna kefil olamıyorum.


2
Cron ile bir kapanma zamanlamak gerçekten kötü bir alışkanlıktır. Birden sunucunun neden her pazartesi sabahı kapalı olduğunu merak edeceksiniz.
Ouki

4
@Ouki Üzgünüm ama sadece kapatma için cron kullanmanızı önerdiğim yeri göremiyorum. Bir parantez içinde mümkün olduğunu (mümkün olduğunu) ancak bunu önermiyoruz. Burada kapsamlı cevapları sevme eğilimindeyiz, bu yüzden diğer alternatifleri teklif ettim ve asla kullanılmamasını önerdim shutdown. Bu kötü deneyim için hissediyorum, bu hoş olamazdı.
terdon

2
Bu daha çok öneri hakkında, shutdownzamanlamayı karıştırdığınızdan ve cronaynı yanıtta olduğu için ... Bir iş istasyonunda mı yoksa 1000 kullanıcı posta sunucusunda mı (üzücü deneyimim) kötü bir alışkanlığın sonuçları hakkında daha fazla şey var.
Ouki

3
Ouki buradayım. Tartışırken shutdown, biri içermemelidir cron. (özellikle de bunun neden korkunç bir fikir olduğunu bilemeyecek biriyle.)
Ricky Beam

2
Bu cevabın zaten soru tarafından kabul edilen bilgilerle yol açtığı konusunda biraz kafam karıştı. OP, kapatma için bir zamanın nasıl belirleneceğini biliyor gibi görünüyor, ancak hem tarih hem de zamanın nasıl belirtileceğini bilmek istiyor. Bu cevapta ele alınmasına rağmen, ilk etapta ne isteniyorsa, ekstra bilgi gibi sağlanmış.
Weeble

24

Hayır, kapatma komutunda tarih belirtemezsiniz, ancak iki seçenek vardır:

1) En kolay at komutunu kullanmaktır . Aşağıdaki örnek, shutdown +5belirli bir saat ve günde yürütülecektir :

echo "shutdown +5" | at 10:05am 2019-01-19

2) hesap makinesini kullanmak sakıncası yoksa ve 24 saat (24 * 60 = 1440 dakika) deyince sistemin tamamen açılıp kapanmayacağından eminseniz:

shutdown -r +1440

2
Yukarıdaki cevabımın sebebi: terdon'un cevabı doğru ve çok kapsamlı ama çok konuşkan (en azından IMHO)
ndemou

2
Eğer konuşarak, yardımsever ve kapsamlı demek istiyorsan ... Cevabın bile atemri açıklamadı .
Anthony,

@Anthony Bu şekilde kullanmanın athiçbir açıklamayı haketmediğine inanıyorum . Aksi takdirde inandığını görebiliyorum. Farklı beyinler, farklı görüşler.
ndemou

Bu cevap artık doğru değil. Van Smoorenburg, Upstart ve systemd shutdownkomutları bir tarih belirtimine izin vermiyor. Ancak uç araç takımı shutdown, uzun süredir devam eden BSD sözdizimini desteklemektedir.
JdeBP

@JdeBP: İkisinin alternatifinin artık doğru olmadığına ve bunların doğru olmadığını test ettiniz ve doğruladınız mı? Her iki komutu da 3 sistemde test ettim (Ubuntu 18.04,16.04 ve CentOS 7) ve iyi çalıştılar. Yorumunuzun geri kalanıyla ilgili olarak ("Van Smoorenburg ...") Bu cevabın artık doğru olmadığına veya genel bir yorum olmadığına dair açıklamanızın net olup olmadığından emin değilim. Belki biraz daha fazla bilgi içeren bir cevap göndermelisin.
ndemou

6

Sisteminizi 12: 00'da kapatacak:

$ sudo shutdown -h 12:00

Seçenekler:

-h, -P, --poweroff

Makineyi kapatın.

-r, --reboot

Makineyi yeniden başlatın.

-c

Bekleyen bir kapanmayı iptal et.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.