belirli bir tarihte kapatma


11

Belirli bir süre için bir kapatma planlayabileceğinizi shutdown -h 21:45ve tekrarlayan doğaları nedeniyle bu tür şeyler için crontabs kullanmamanız gerektiğini biliyorum. 31 Ağustos gibi 20:00 gibi belirli bir tarih için nasıl kapanma planlayabilirim ?

Yanıtlar:


7

Son Ubuntu sürümleri systemd kullanır ve bir kerelik komutlar için geleneksel atdve ilişkili atzamanlayıcı yüklü olmadığında veya bir kerelik komutsystemd-run çalıştırılmadığında , aşağıdakileri elle oluşturmaktan biraz daha kolaydır systemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

2
İroni, bunu yapmak için tüm bir hizmete başlamak neredeyse gereksizdir. systemd'in kapatma mekanizması zaman içinde keyfi noktaları destekler. Komut satırı aracı, BSD'nin komut satırıyla aynı olmadığından, buna erişim yeteneği sağlamaz shutdown. Başka bir cevapta yazdığım gibi, bunu isteyen siz sistemli insanları shutdownaraçlarını daha yetenekli hale getirmek için on yıllarca ayakta durma sözdizimi ile evlerin etrafında dolaşmak yerine ikna etmeye çalışabilirsiniz systemd-run.
JdeBP

Geçersiz takvim özelliği alıyorum: 2019-08-31 20:00:00 CET
HdM Yüklemesi

12

atKomut gelecek infaz kapalı zamanlama biri içindir.

Örneğin

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

("<EOT>" kontrol-D'ye basılarak üretildi)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

shutdownKomutunuzu buraya koyabilirsiniz .


Evet! Bir şirkette kabul edilen yöntem olabilir veya yapılandırma yönetimi / dağıtımıyla ilgili sözleşmelere bağlı olarak , ne atzaman yayınladığımı unutmuştum - atkesinlikle bunun için kastedilmektedir . atcron
flow2k

Tam olarak eşdeğer değildir, not edin. unix.stackexchange.com/q/465322/5132
JdeBP

atAyrıca bir boru komutları alabilmesi için: echo "echo yup > $(tty)" | at now.
mosvy

7

Bunu atyapmanın bariz yolu olsa da, kapanmalardan kurtulacağını düşünüyorum, bu nedenle makine planlanan kapanmadan önce yeniden başlatılırsa, programlanan zamanda tekrar kapanabilir. Bu nedenle, bash ve GNU tarihini kullanarak gecikmeli kapanma kullanabiliriz.

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

Not: Bu sadece bir dakika kadar doğrudur. UNIX döneminden beri planlanan zamanı ve şimdi saniyeye çevirerek, farkı hesaplayarak, dakikalara dönüştürerek ve sonra bunu kapanma gecikmesi olarak kullanarak çalışır. Planlanan zaman geçmişte ise düzgün çalışmaz.


3

Daha iyi bir shutdownkomut kullanıyorsunuz.

Van Smoorenburg, Upstart ve systemd shutdownkomutları tarih belirtimine izin vermez. Ancak BSD shutdownkomutu, formda ne zaman kapatılacağı belirtiminde bir tarih değeri alır yymmddhhmm. 4BSD'den bu yana durum böyledir ve FreeBSD ve OpenBSD için de geçerlidir. NetBSD bunu genişletti ccyymmddhhmm.

Nosh araç takımı BSD'lerde de kullanılabilir olduğundan, komutuma shutdownaynı yeteneği verdim ve NetBSD'ye genişlettim CCYYMMDDHHMM. Ayrıca nosh araç seti de Linux'ta kullanılabilir olduğu için, Linux'a tarihleri ​​alan bir kapatma komutu verir.

Tabii ki nosh ile çalışır system-manager. Diğer bazı sistemlerle de çalışır. Bir şeyleri işlemek için # 1 işlemine sinyaller gönderir ve aynı sinyaller, diğer sistem yöneticileri tarafından anlaşılır, örneğin systemd, kullanılarak kapatılabilir.

Onu ya da onun gibi bir aracı kullanabilirsiniz; veya diğer Linux shutdownprogramlarının yazarlarını araçlarını BSD kadar yetenekli olacak şekilde genişletmeye ikna etmeye çalışabilirsiniz shutdown.

daha fazla okuma


1

İşi sadece bu yıl yürütmek için:

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

İşi her yıl yürütmek için:

0 20 31 8 * /sbin/shutdown now

-4

Yılı shutdownkomuta girmek için bir seçenek olabilir , ancak cron komutları belirli bir zamanda yalnızca bir kez çalıştırmak için kullanılabilir. Örneğiniz için deneyin

0 0 31 8 ? 2019  shutdown

Dikkat: Yukarıdaki standart cron sözdizimi değildir.


2
1. Bu saat 20:00 demiyor, gece yarısı diyor. 2. Zamanlama için SIX alanlı bir cronjob görmedim. Hangi cron uygulamasından bahsediyorsunuz?
Joker karakter

2
Programda bir yearalan yokcrontab
Seamus

Daha sonra bu sözdiziminin "standart cron" olmadığını fark ettim, bu yüzden katılıyorum, nominal değerde alınmamalıdır. OP, cron kullanımı ile ilişkili bir performans cezası olduğunu ima ediyor gibi görünüyor, bu yüzden Cevabımda açıklığa kavuşturmaya çalıştım - cron'un uygulaması hakkında bir defalık görev için uygun olmayan doğası gereği verimsiz değil. Siz de öyle mi düşünüyorsunuz?
flow2k
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.