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.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>