Lista zadań crona dla wszystkich userów
Jakoś niedawno padło pytanie w pracy: “Jak wyświetlić listę wszystkich zadań crona dla każdego użytkownika w systemie”. Pierwsza myśl jaka przyszła mi wtedy do głowy to:
man crontab
Zdziwiło mnie, że nie można wyświetlić zadań dla każdego usera, tylko trzeba dla każdego z osobna pisać:
crontab -l -u username
Tak powstał skrypt do wyświetlania listy crontabów dla wszystkich userów w systemie:
#!/bin/sh
users=`cut -d ':' -f 1 /etc/passwd | sort`
for user in $users; do
tasks=`crontab -l -u $user 2> /dev/null`
if [ "$tasks" != "" ]; then
echo "\033[31;1m**** $user **** \033[0m"
echo "$tasks"
echo
fi
done
Jak działa ten skrypt? W pierwszej kolejności parsujemy plic /etc/passwd w poszukiwaniu userów w systemie. Następnie pobieramy listę crontab dla tego usera. Jeśli lista jest niepusta to wyświetlamy ją na ekranie.
Warto zwrócić uwagę, że nie jest brany pod uwagę plik /etc/crontab, który jest bardzo popularny w linuksach (brak go w BSD), więc do tego pliku musimy zajrzeć sami. Powyższy skrypt wyświetla tylko crontaby userów :)
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.