Cron időzítés miatt szükségem volna elkövetkező időpontok UTC formába való konvertálására.
Adott 3 érték: a hét napja, óra és perc.
3 12:10 - ez ezt jelenti: szerda 12:10 (Igazából minden szerda - cron miatt)
Ebből hogyan lehet UTC időt varázsolni? Az időpontok minden esetben így érkeznek, esetleg még így: mindennap 10:30-kor,
vagy így: 1-3 8:50 (hétfőn, kedden, szerdán 8:50-kor)
A date paranccsal való kísérletezgetéseim közben eddig nem jöttem rá, hogy 3 adatból hogyan lehetne ezt kihozni.
Hiányzik a month értéke.
echo -n "Add meg az adatokat szóközzel! (nap, óra, perc): "
read HN hour minute
Itt a HN a hét napja, és ezt nem tudom megetetni a date paranccsal. Ő persze kiírja számmal hogy az aktuális nap az melyik a héten: date +%u
De ez visszafelé hogy működik?
De a feldolgozáshoz fake adatot is meg kell neki adnom. Jelen esetben először a hónapot:
month=$(date +%m) # aktuális hónap
secs=$(date -d "${month}/${day} ${hour}:${minute}" +%s)
echo $secs
De ez nem tökéletes, mert pont a "HN" értéke hiányzik. Azt nem tudom átültetni. Helyette most "day" van.
Igen olvastam a man-t de nem lettem okosabb.
Mégegyszer: elkövetkező időpontok UTC formába való konvertálása.
Kinek van ötlete?
- 4585 megtekintés
Hozzászólások
"Cron időzítés miatt szükségem volna elkövetkező időpontok UTC formába való konvertálására."
"echo $secs"
Biztos, hogy UTC-t akartál írni a unix timestamp helyett? Az az echo az utóbbira enged következtetni, bár annak meg nem sok köze van a cronhoz.
Az UTC-s kérdésre már a másik, általad ugyanebben a témában nyitott topikban választ kaptál.
"Itt a HN a hét napja, és ezt nem tudom megetetni a date paranccsal."
info date:
28.5 Day of week items
======================
The explicit mention of a day of the week will forward the date (only if necessary) to reach that day of the week in the future.
Days of the week may be spelled out in full: `Sunday', `Monday', `Tuesday', `Wednesday', `Thursday', `Friday' or `Saturday'. Days may be abbreviated to their first three letters, optionally followed by a period. The special abbreviations `Tues' for `Tuesday', `Wednes' for `Wednesday' and `Thur' or `Thurs' for `Thursday' are also allowed.
A number may precede a day of the week item to move forward supplementary weeks. It is best used in expression like `third monday'. In this context, `last DAY' or `next DAY' is also acceptable; they move one week before or after the day that DAY by itself would represent.
- A hozzászóláshoz be kell jelentkezni
Köszi stra, de én egy bonyolult figura vagyok.
Amit akarok annak tényleg nincs köze a cronhoz közvetlenül. De közvetve van. Amit a múltkor kérdeztem azt már megoldottam egy kérdés feltevéssel hogy megtudjam melyik a jó időpont?
secs=$(date --date "${month}/${day} ${hour}:${minute}" +%s)
secs1=$(date -u --date "${month}/${day} ${hour}:${minute}" +%s)
while true; do
error="0"
echo -e "\n${Cyan} UTC miatti kérdés. Mikor kezdődik a felvétel? "
echo -e "${NC} $(date "+%Y %B %d ${White}%R" -d @${secs}) ${Cyan}vagy"
echo -ne "${NC} $(date "+%Y %B %d ${White}%R" -d @${secs1}) ${Cyan}(1/2) "
read answer || break
answer_control_12
error_level
done
if [ "${answer}" = "2" ]; then
secs="${secs1}"
fi
Van egy tvrip programom amit írtam, és ha azt szeretném hogy a számítógépem bekapcsoljon a BIOS állítgatása nélkül, akkor biza a számítógépet kell rábírni arra hogy ezt megtegye. Erre én a /sys/class/rtc/rtc0/wakealarm nevű processzt, változót, mittudomémminekhívják-ot néztem ki magamnak. és ide teszem be azt a formátumú időt mely így néz ki: 1341662880
Ez akkor most micsoda? Universal Time Code? Unix time code? Egyszerűen UTC időnek nevezem.
Tehát ebben a tvrip programban van lehetőség időzített felvételek megadására. Amikor kérdeztem az UTC időt, akkor még az AT időzítővel vacakoltam, de az már frankón működik. A megkérdezett időt simán át tudom konvertálni UTC formába, amit aztán beletudok tenni a wakealarmba. És ekkor a gép bekapcsol és felveszi a filmet.
És örülök. Mások nem örülnek, mert nem ismerik a programot, mert hiába kértem segítséget a továbbfejlesztéshez, senkit nem érdekelt.
Most jön a cron időzítő. Itt már nehezebb a dolgom, mert az egy dolog hogy a cronba eltárolom hogy mit kell felvenni, de a gépnek is be kéne kapcsolnia időben.
És most ez a probléma.
Tehát ha most a HN felveszi a 3-as értéket, (ami mint tudjuk minden SZERDA), a hour a 12-t a minute a 10-et, akkor abból hogyan lesz 1341662880? Ez a kérdés. Ugyanis a kapott eredményt tudom csak beletenni a wakealarmba.
Amit beidéztél azt meg végképp nem értem.
28.5 Day of week items
$ hn=3 hour=12 minute=10; secs=$(date -d "$hour:$minute.$hn" +%s); echo $secs
date: érvénytelen dátum: ”12:10.3”
A variációkat is kipróbáltam, eddig eredménytelenül.
- A hozzászóláshoz be kell jelentkezni
"teszem be azt a formátumú időt mely így néz ki: 1341662880"
# date -d @1341662880
Sat Jul 7 14:08:00 CEST 2012
#
Maradjunk a unix timestamp megnevezésnél, az UTC az időzónákkal (is) kapcsolatos terminus, és ugyanebben a témakörben teljesen mást jelent, mint az előbbi kifejezés.
"A variációkat is kipróbáltam, eddig eredménytelenül."
"Amit beidéztél azt meg végképp nem értem."
Pedig nem bonyolult, ez volt az idézett szöveg lényege: "Days of the week may be spelled out in full: [...]. Days may be abbreviated to their first three letters [...]."
A date nem ismeri a DoW meghatározásához a sorszámot, hanem ki kell írni neki.
# date -d 'Wed 12:10'
Wed Oct 3 12:10:00 CEST 2012
#
Tehát fogod a neveket, és összerendeled a sorszámokkal, mondjuk egy tömb segítségével:
# DOW=(Sun Mon Tue Wed Thu Fri Sat Sun)
# echo ${DOW[3]}
Wed
#
Tehát a fenti két példát összehegeszted, és már kész is vagy.
"mert hiába kértem segítséget a továbbfejlesztéshez, senkit nem érdekelt."
Ezt már többször írtad, de szerintem ne sértődj meg a kevés érdeklődőn. Már akkor is megérte foglalkozni vele, ha rajtad kívül kevesen fogják használni. De te is tanulsz közben.
- A hozzászóláshoz be kell jelentkezni
OK köszi. Ez már számomra egy építő jellegű hozzászólás.
Azt persze értettem hogy ha szövegként van megadva akkor előrébb járnék, de mivel nekem a tömbök még elég újak, holott már van is a scriptben, még nem evidens hogy eszembe is jusson, és azt használjam is.
- A hozzászóláshoz be kell jelentkezni