Muszę codziennie uruchamiać skrypt. Skrypt powinien być uruchamiany jako określony użytkownik (np. Użytkownik1), a nie jako root. Więc umieściłem plik cron na /etc/cron.d i umieściłem nazwę użytkownika w linii (druga kolumna). Ale daje błąd, mówiąc, że polecenie nie zostało znalezione. Podejrzewam, że skrypt nie został uruchomiony jako środowisko użytkownika user1. Przegapiłem coś?
20
Odpowiedzi:
Tylko
/etc/crontab
pliki w/etc/cron.d/
polu mają nazwę użytkownika. W tym pliku możesz to zrobić:Z crontab root'a
sudo crontab -e
możesz użyć:Lub możesz użyć rzeczywistego crontab użytkownika w następujący sposób:
Druga kolumna w dowolnym pliku crontab jest na godzinę, że chcesz pracować na pracę. Miałeś na myśli szóste pole?
źródło
/etc/cron.d/
pliki są częścią/etc/crontab
.sudo
jest również bezcelowe. Usunę tę część.sudo su...
jest ogólnie niepotrzebne;sudo -u <user> <command>
zwykle wystarcza. (b) sudo będzie dławić się na niektórych systemach, jeśli nie ma dołączonego TTY (na przykład podczas uruchamiania przez crona). Można to naprawić w pliku sudoers.Może być konieczne ustawienie PATH dla tego użytkownika, jeśli plik wykonywalny, którego używasz, znajduje się w, powiedzmy, / usr / local / bin. Aby ustawić ŚCIEŻKĘ, umieść coś takiego przed cronjobs:
Innym sposobem jest pełne określenie ścieżki do sample_executable w twoim cronjob, więc:
Jeśli sample_executable odwołuje się do plików wykonywalnych spoza standardowej PATH, powinieneś użyć pierwszej opcji.
źródło
Typowy katalog dla crontabs użytkownika to / var / spool / cron / crontabs. Format pliku to ten, który nie zawiera nazwy użytkownika. Crontabs użytkownika są własnością użytkownika i nazwane na cześć użytkownika w trybie 0600. Najlepiej jest to zrobić, pisząc plik tab i używając
crontab -u username filename
do skonfigurowania dowolnych wpisów cron dla tego użytkownika.źródło