[+] Crontab - zapis dla zwyk

Ogólne pytania dotyczące systemu
Awatar użytkownika
nighttrain
Beginner
Posty: 123
Rejestracja: 07 marca 2009, 19:47
Lokalizacja: 127.0.0.1

[+] Crontab - zapis dla zwykłego użytkownika nie działa

Post autor: nighttrain »

Witam.

Chciałbym zasięgnąć rady co może być przyczyną tego, iż jako zwykły użytkownik nie mogę nic zapisać do:

Kod: Zaznacz cały

crontab -e
Dzieje się tak, że, gdy coś zapiszę i dostaję stosowny komunikat, że mój wpis został dodany, to, gdy wywołuję:

Kod: Zaznacz cały

crontab -
lub:

Kod: Zaznacz cały

crontab -l
to tak naprawdę się nie zapisuje. Dostaję też komunikat:

Kod: Zaznacz cały

no crontab for Janek
Przeczytałem, że ma być plik w /etc - cron.allow, nie miałem go, więc utworzyłem jako root i wpisałem nazwę użytkownika i dalej nic. Ma ktoś jakiś pomysł?

Pozdrawiam.
franek4always
Posty: 42
Rejestracja: 02 stycznia 2007, 21:25

Post autor: franek4always »

Z podręcznika systemowego:

[quote="""]
crontab is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron. Each user can have their own
crontab, and though these are files in /var/spool/cron/crontabs, they are not intended to be edited directly.
If the /etc/cron.allow file exists, then you must be listed (one user per line) therein in order to be allowed to use this command. If the
/etc/cron.allow file does not exist but the /etc/cron.deny file does exist, then you must not be listed in the /etc/cron.deny file in order to use
this command.
If neither of these files exists, then depending on site-dependent configuration parameters, only the super user will be allowed to use this com-
mand, or all users will be able to use this command.
If both files exist then /etc/cron.allow takes precedence. Which means that /etc/cron.deny is not considered and your user must be listed in
/etc/cron.allow in order to be able to use the crontab.
Regardless of the existance of any of these files, the root administrative user is always allowed to setup a crontab. For standard Debian systems, all users may use this command.[/quote]

Jak wynika z ostatniego zdania po standardowej instalacji Debiana każdy użytkownik domyślnie może mieć swojego crona. Wskazówka: usuń /etc/cron.allow i /etc/cron.deny i spróbuj utworzyć zadanie cron. Jak nie pójdzie to zweryfikuj jeszcze uprawnienia do katalogu /var/spool/cron/crontabs powinien mieć uprawnienie write dla groupy crontab jeśli ma to jeszcze sprawdź uprawnienia do /usr/bin/crontab powinien mieć mieć ustawiony bit SUID dla grupy crontab, czyli powinien mieć uprawnienia (2755/-rwxr-sr-x)
Ostatnio zmieniony 25 maja 2016, 15:14 przez franek4always, łącznie zmieniany 1 raz.
Awatar użytkownika
nighttrain
Beginner
Posty: 123
Rejestracja: 07 marca 2009, 19:47
Lokalizacja: 127.0.0.1

Post autor: nighttrain »

Udało mi się, skorzystałem z edytora mc i poprawnie dodało mi wpis. Nie wiem dlaczego, kiedyś korzystałem z nano i wszystko było w porządku. Mam natomiast inny bardzo dziwny problem. Dodaję wpisy do crontaba i się nie wykonują. Dodaję poprawnie wpisy, jednak się nie wykonują i nie mam zielonego pojęcia dlaczego. Oto moja tablica:

Kod: Zaznacz cały

crontab -e

Kod: Zaznacz cały

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#
58 19 * * * /home/debian/Desktop/test.sh
#
Na pulpicie mam skrypcik test.sh z prawami +x

Kod: Zaznacz cały

#!/bin/bash
/usr/bin/icedove
Dlaczego to może nie działać?

Dodane:
W
syslogu dostałem taki komunikat:

Kod: Zaznacz cały

Mar 21 09:06:01 toshiba /usr/sbin/cron[1488]: (debian) RELOAD (crontabs/debian)
Mar 21 09:06:01 toshiba /USR/SBIN/CRON[9530]: (debian) CMD (/home/debian/Desktop/test.sh)
Mar 21 09:06:01 toshiba /USR/SBIN/CRON[9529]: (CRON) error (grandchild #9530 failed with exit status 1)
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Kod: Zaznacz cały

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Te linie również dopisałeś do tabeli crona?
Awatar użytkownika
nighttrain
Beginner
Posty: 123
Rejestracja: 07 marca 2009, 19:47
Lokalizacja: 127.0.0.1

Post autor: nighttrain »

Wyżej je napisałem.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Nie bardzo rozumiem Twoją odpowiedź.
Podaj wynik polecenia

Kod: Zaznacz cały

crontab -l
na koncie tego użytkownika, dla którego te wpisy mają działać.
Awatar użytkownika
nighttrain
Beginner
Posty: 123
Rejestracja: 07 marca 2009, 19:47
Lokalizacja: 127.0.0.1

Post autor: nighttrain »

Kod: Zaznacz cały

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command

38 15 * * * /home/debian/Desktop/test.sh

#
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

nighttrain pisze:Dlaczego to może nie działać?
Bo normalnie z crona nie można uruchamiać aplikacji graficznych, a w skrypcie odpalasz icedove'a (crond nie wie na którym ekranie ją uruchomić, bo i skąd). Trzeba go poinformować o tym ustawiając odpowiednio zmienną DISPLAY. Przykładowy wpis może wyglądać tak:

Kod: Zaznacz cały

* * * * * export DISPLAY=:0 && /cos/graficznego
Awatar użytkownika
nighttrain
Beginner
Posty: 123
Rejestracja: 07 marca 2009, 19:47
Lokalizacja: 127.0.0.1

Post autor: nighttrain »

I nic. Dodałem log z /var/log/syslog:

Kod: Zaznacz cały

Mar 21 18:19:01 toshiba /USR/SBIN/CRON[3442]: (debian) CMD (export DISPLAY=:0 && /usr/bin/icedove)
Mar 21 18:19:01 toshiba /USR/SBIN/CRON[3441]: (CRON) error (grandchild #3442 failed with exit status 1)

Kod: Zaznacz cały

crontab -e

Kod: Zaznacz cały

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command

*/1 * * * * export DISPLAY=:0 && /usr/bin/icedove
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

U mnie działa.

W takim razie sprawdź jeszcze dwie rzeczy:
  • czy $DISPLAY u Ciebie też wskazuje na :0 (powinno, ale kto go tam wie),
  • przekieruj wyjście polecenia z crona do pliku i sprawdź co krzyczy (2>&1 >/tmp/cron.log)
ODPOWIEDZ