Kicsit agyaltam és lehet, hogy túlgondoltam az egészet. Majd ti megmondjátok, hogy hülye vagyok. Mindegy. Működik a következő script és crontab kombó a következő beállításokkal?
Hétfőn 20-kor leáll keddtől-csütörtökig 18-kor leáll, pénteken 16-kor leáll és minden hétköznap reggel 7.30-kor bekapcsol.
#!/bin/bash
current_day=$(date +%u) # A hét napjának számát tároljuk el (1-7, hétfőtől vasárnapig)
case $current_day in
1) # Hétfő
wake_after_minutes=690
;;
[2-4]) # Kedd, Szerda, Csütörtök
wake_after_minutes=810
;;
5) # Péntek
wake_after_minutes=3810
;;
*) # Egyéb napokon
wake_after_minutes=0
;;
esac
sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sh -c "echo $(date '+%s' -d "+ $wake_after_minutes minutes") > /sys/class/rtc/rtc0/wakealarm"
shutdown -h now
És a crontab:
0 20 * * 1
0 18 * * 2-4
0 16 * * 5
Működhet a dolog?
- 458 megtekintés
Hozzászólások
Nem lenne egyszerubb siman a crontab -ba tenni rogton a shutdown parancsot? ott mar szepen napok szerint van szortirozva amugy is, megsporolnal egy felesleges bonyolult script-et.
- A hozzászóláshoz be kell jelentkezni
Igazából a kikapcsolás csak egy sor. A bonyolultabb része a bekapcsolás időzítése. Hisz minden nap más perccel kell bekapcsolnia a kikapcsolás után.
“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”
― Philip K. Dick
- A hozzászóláshoz be kell jelentkezni
Olyan nem lehet, hogy valaki tulorazik, bent marad tovabb, es kilovod alola a gepet? Talan egy hatterben futo scriptet hasznalnek inkabb erre, ami megnezi hasznaljak-e tavolrol, illetve vegigpingeti a LAN-t, es ha nem kell mar, akkor x ido mulva leall. A wakealarmot meg akkor, kozvetlenul a shutdown elott adnam ki az akkor kiszamitott ertekkel.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Hát ez is egy megoldás, de ezt nem biztos, hogy le is tudnám programozni... Én csak hobbista vagyok. Egy kis bash/python scriptet még megírok, de komolyabb összetett dolgot még nem írtam. Bár az alapjait szerintem meg tudnám csinálni pythonban egy egyszerű response függvény segítségével, de tenni kellene bele hibakeresést, kivételkezelést, stb és ha ez működik, akkor nem piszkálom.
“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”
― Philip K. Dick
- A hozzászóláshoz be kell jelentkezni
Valahol benézek valamit. Segítsetek kérlek!
A script:
# cat /usr/local/bin/shutwake
#!/bin/bash
sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sh -c "echo `date '+%s' -d '+ 7 minutes'` > /sys/class/rtc/rtc0/wakealarm"
shutdown -h now
A cron-ba a következőképp helyeztem el:
00 10 * * * /usr/local/bin/shutwake
Vagyis ma 11-kor fusson le.
Le is fut. Vagyis egy része. Pontosabban a megadott időpontban bekerül a /sys/class/rtc/rtc0/wakealarm állományba egy unix epoch szám. (Ez egy órával kevesebb mondjuk a helyi időzónánál, de szerintem ez most mindegy.) Viszont az utolsó sor, nevezetesen a kikapcsolás nem fut le. Mert a gép nem kapcsol ki. Ha belépek a könyvtárba és ott futtatom ./wakealarm paranccsal hibátlanul kikapcsol, majd bekapcsol. De ha ugyanezt cron-ból csinálom akkor nem kapcsol ki.
Miért?
Szerk. Ez még hasznos infó lehet:
# ls -l /usr/local/bin/shutwake
-rwxr-xr-x 1 root root 153 Nov 14 11:24 /usr/local/bin/shutwake
“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”
― Philip K. Dick
- A hozzászóláshoz be kell jelentkezni
1: mit ír a log?
2: ilyenkor jellemzően a $PATH szokott lenni a probléma
Próbáld meg a shutdown-t teljes elérési úttal kiadni.
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Igen, köszönöm valóban ez volt a gond. Most már működik.
“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”
― Philip K. Dick
- A hozzászóláshoz be kell jelentkezni
Ha nem a szokasos kornyezettel es felhasznaloval futtatok egy scriptet, bele szoktam tenni egy olyat debug idejere, ami kiteszi egy file-ba, hogy nala milyen kornyezet latszik. Pl: set >/valami/filenev
A shutdown-hoz root jog kell. A cron ugy emlekszem tud rootkent futtatni scripteket, de ez be van allitva? (Lehet sudo-zni is.)
A unix timestamp UTC-ben fut, a helyi idozonat, teli-nyari atallast es effeleket utolag adjak hozza. Most UTC+1-ben vagyunk.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Ez hasznos. Elteszem magamnak snippet-be. Köszönöm.
“The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use them.”
― Philip K. Dick
- A hozzászóláshoz be kell jelentkezni