Portál AbcLinuxu, 29. června 2025 03:11


Dotaz: CentOS - naplánovaná úloha

3.8.2017 17:23 Avax
CentOS - naplánovaná úloha
Přečteno: 348×
Odpovědět | Admin
Dobrý den, budu rád za každou radu, která mě navede k řešení.

Mám naplánovanou úlohu, která ve spustitelném souboru vypadá takto:

echo $(date -u) $(service eonud status) >> /usr/local/bin/log.txt

Když tento skript spustím ručně, tak je výstup do logu v pořádku, pokud jej ale spustí cron, tak výstup obsahuje pouze zapsané datum a formátovací mezery bez statusu služby.

Stejně to dopadne, když to rozdělím na 2 řádky, tedy:

echo $(date -u) >> /usr/local/bin/log.txt

echo $(service eonud status) >> /usr/local/bin/log.txt

Asi se bude jednat o nějakou začátečnickou chybu, ale nepodařilo se mi najít nic, co by mi pomohlo.

Děkuji za rady


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 3.8.2017 17:33 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dej sem přímo ukázku toho, co to vypíše a co by to mělo vypsat. Také se koukni do mailu, jestli tam není nějaká chyba.
Hello world ! Segmentation fault (core dumped)
3.8.2017 18:09 karlik
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Proč tam máš to echo a $ ?

echo "$(/usr/sbin/service eonud status)" >> /usr/local/bin/log.txt

usr/sbin/service eonud status >> /var/log/eonudlog.txt

Podívej se do logů (journalctl -ex). Možná zkusit vypnout SELinux (setenforce 0).
3.8.2017 17:51 NN
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Od kdy patri logy do /usr/local/bin? Dej to laskave do /var/log. Kdyz to dam do cronu(Ubuntu) tak to funguje normalne, jinak cron taky loguje..
3.8.2017 18:05 Avax
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Odpovědět | | Sbalit | Link | Blokovat | Admin
Logování jsem upravil do /var/log/eonud_log.txt.

pokud pustím skript ručně (ať už přímo jako příkaz, nebo spuštěním spustitelného souboru), výstup je v pořádku, jak jej chci:

Čt srp 3 15:57:49 UTC 2017 eonud (pid 38641) běží...

pokud to spustí cron:

Čt srp 3 15:57:49 UTC 2017

Chybí mi tedy informace o statusu eonudu.

3.8.2017 18:08 Avax
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Ještě doplnění,

v mailu nic není.

Zkusil jsem to ještě udělat za pomoci printf,

printf '%s %s' "$(date -u) $(service eonud status)"

Výsledek je úplně stejný jako v předchozím řešení. Ručním spuštěním vše ok, při spuštění cronem výstup také bez informace o stavu služby.
Chytrex avatar 3.8.2017 18:17 Chytrex | skóre: 30 | Bohumín
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
pod jakým uživatelem to pouštíš ručně a pod jakým uživatelem to máš v cronu?
Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
4.8.2017 08:24 marsur | skóre: 6
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
posli ako to mas v crone spustene

sh skript.sh ?

a este ake su prava toho skriptu?

3.8.2017 18:16 t
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Nevypisuje se ten status do STDERR místo STDOUT?
Řešení 1× (Avax (tazatel))
MMMMMMMMM avatar 4.8.2017 08:31 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
a co echo $(date -u) $(/sbin/service eonud status) >> /usr/local/bin/log.txt
4.8.2017 11:01 Avax
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Dobrý den,

děkuji za pomoc, takto to funguje.
4.8.2017 11:08 Avax
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Můžu se ještě zeptat, proč takto to funguje a můj předchozí způsob pod cronem nefungoval? Rád se poučím.
4.8.2017 12:32 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Asi nemáš nastavenú cestu ${PATH} v cron-e aby hľadala programy aj v /sbin/.
Josef Kufner avatar 4.8.2017 12:37 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Protože v cronu máš jinak nastavenou $PATH a není tam /sbin. Jak jsem ti psal na začátku, v mailu (/var/mail/root) máš chybovou hlášku (pokud ti mail vůbec funguje), že příkaz "service" se nepovedlo najít.

Na začátek /etc/crontab (nebo kam jsi to dával) stačí připsat něco jako toto:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Hello world ! Segmentation fault (core dumped)
6.8.2017 12:50 Alibaba
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
Odpovědět | | Sbalit | Link | Blokovat | Admin

#!/bin/bash

SERVICE=$(which service)
ECHO=$(which echo)
DATE=$(which date)

$ECHO $($DATE -u) $($SERVICE httpd status) >> /var/log/eonud_log.txt
k3dAR avatar 6.8.2017 13:13 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: CentOS - naplánovaná úloha
mozna mi neco unika ;) ale which hleda prikaz v $PATH, pokud je problem ze dana cesta neni v $PATH, tak to tedy ani which nenajde, jedine to muze mit vyznam u echo aby se nepouzilo interni echo z bash...
porad nemam telo, ale uz mam hlavu... nobody

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.