मैं सभी उपयोगकर्ताओं के लिए सभी क्रोन नौकरियों को कैसे सूचीबद्ध करूं?


856

क्या कोई कमांड या मौजूदा स्क्रिप्ट है जो मुझे एक * NIX सिस्टम के अनुसूचित क्रॉन जॉब्स को एक बार में देखने देगा? मुझे यह पसंद है कि सभी उपयोगकर्ता crontabs, साथ ही साथ /etc/crontabऔर जो कुछ भी शामिल है /etc/cron.d। यह भी द्वारा चलाए जा रहे विशिष्ट आदेशों को देखने के लिए अच्छा होगा run-partsमें /etc/crontab

आदर्श रूप में, मैं आउटपुट को एक अच्छे कॉलम के रूप में पसंद करता हूं और कुछ सार्थक तरीके से ऑर्डर करता हूं।

मैं तब समग्र "घटनाओं की अनुसूची" देखने के लिए कई सर्वरों से इन लिस्टिंग को मर्ज कर सकता था।

मैं खुद इस तरह की पटकथा लिखने वाला था, लेकिन अगर कोई पहले से ही परेशानी में है ...


2
Unix SE पर समान प्रश्न: unix.stackexchange.com/questions/7053/…
maxschlepzig

जवाबों:


1133

आपको इसे रूट के रूप में चलाना होगा, लेकिन:

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

प्रत्येक उपयोगकर्ता नाम पर उनके लूप को सूचीबद्ध करेगा। Crontabs संबंधित उपयोगकर्ताओं के स्वामित्व में हैं, इसलिए आप किसी अन्य उपयोगकर्ता के crontab w / o को उनके या रूट के रूप में नहीं देख पाएंगे।


संपादित करें यदि आप जानना चाहते हैं कि उपयोगकर्ता किस कॉन्ट्राब से संबंधित है, तो उपयोग करेंecho $user

for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

53
जब उपयोगकर्ता NIS या LDAP में परिभाषित होते हैं तो काम नहीं करता है। आपको उपयोग करने की आवश्यकता हैfor user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done
ह्यूबर्ट करियो

9
टिप्पणियों को बहिष्कृत करने और 'उपयोगकर्ता के लिए नो कॉरेस्टब ...' संदेशों को दबाने के लिए यह अपडेट किया गया:for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done
जोनाथन

38
क्या फाइलों को / var / spool / cron में देखना आसान नहीं होगा?
ग्रेव

2
हमें एलडीएपी और / आदि / पासवार्ड को गेटअन कमांड के साथ बदलने की जरूरत है:for user in $(getent passwd | awk -F : '{print $1}'); do echo $user; crontab -u $user -l; done
टोबी बैच

9
में cronjobs के बारे में क्या /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/...?
अब्दुल

309

मैंने एक स्क्रिप्ट लिखना समाप्त कर दिया (मैं खुद को बैश स्क्रिप्टिंग के बारीक बिंदुओं को सिखाने की कोशिश कर रहा हूं, इसीलिए आपको यहां पर्ल जैसा कुछ दिखाई नहीं दे रहा है)। यह वास्तव में एक साधारण मामला नहीं है, लेकिन मुझे इसकी सबसे ज्यादा जरूरत है। यह एकल उपयोगकर्ताओं के crontabs को देख के लिए केली के सुझाव का उपयोग करता है, लेकिन यह भी साथ सौदों /etc/crontab(लिपियों द्वारा शुरू सहित run-partsमें /etc/cron.hourly, /etc/cron.dailyमें और नौकरियों, आदि) /etc/cron.dनिर्देशिका। यह उन सभी को लेता है और उन्हें निम्नलिखित की तरह कुछ में प्रदर्शित करता है:

mi     h    d  m  w  user      command
09,39  *    *  *  *  root      [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm
47     */8  *  *  *  root      rsync -axE --delete --ignore-errors / /mirror/ >/dev/null
17     1    *  *  *  root      /etc/cron.daily/apt
17     1    *  *  *  root      /etc/cron.daily/aptitude
17     1    *  *  *  root      /etc/cron.daily/find
17     1    *  *  *  root      /etc/cron.daily/logrotate
17     1    *  *  *  root      /etc/cron.daily/man-db
17     1    *  *  *  root      /etc/cron.daily/ntp
17     1    *  *  *  root      /etc/cron.daily/standard
17     1    *  *  *  root      /etc/cron.daily/sysklogd
27     2    *  *  7  root      /etc/cron.weekly/man-db
27     2    *  *  7  root      /etc/cron.weekly/sysklogd
13     3    *  *  *  archiver  /usr/local/bin/offsite-backup 2>&1
32     3    1  *  *  root      /etc/cron.monthly/standard
36     4    *  *  *  yukon     /home/yukon/bin/do-daily-stuff
5      5    *  *  *  archiver  /usr/local/bin/update-logs >/dev/null

ध्यान दें कि यह उपयोगकर्ता और अधिक-या-कम प्रकार को घंटे और मिनट से दिखाता है ताकि मैं दैनिक शेड्यूल देख सकूं।

अब तक, मैंने इसे उबंटू, डेबियन और रेड हैट एएस पर परीक्षण किया है।

#!/bin/bash

# System-wide crontab file and cron job directory. Change these for your system.
CRONTAB='/etc/crontab'
CRONDIR='/etc/cron.d'

# Single tab character. Annoyingly necessary.
tab=$(echo -en "\t")

# Given a stream of crontab lines, exclude non-cron job lines, replace
# whitespace characters with a single space, and remove any spaces from the
# beginning of each line.
function clean_cron_lines() {
    while read line ; do
        echo "${line}" |
            egrep --invert-match '^($|\s*#|\s*[[:alnum:]_]+=)' |
            sed --regexp-extended "s/\s+/ /g" |
            sed --regexp-extended "s/^ //"
    done;
}

# Given a stream of cleaned crontab lines, echo any that don't include the
# run-parts command, and for those that do, show each job file in the run-parts
# directory as if it were scheduled explicitly.
function lookup_run_parts() {
    while read line ; do
        match=$(echo "${line}" | egrep -o 'run-parts (-{1,2}\S+ )*\S+')

        if [[ -z "${match}" ]] ; then
            echo "${line}"
        else
            cron_fields=$(echo "${line}" | cut -f1-6 -d' ')
            cron_job_dir=$(echo  "${match}" | awk '{print $NF}')

            if [[ -d "${cron_job_dir}" ]] ; then
                for cron_job_file in "${cron_job_dir}"/* ; do  # */ <not a comment>
                    [[ -f "${cron_job_file}" ]] && echo "${cron_fields} ${cron_job_file}"
                done
            fi
        fi
    done;
}

# Temporary file for crontab lines.
temp=$(mktemp) || exit 1

# Add all of the jobs from the system-wide crontab file.
cat "${CRONTAB}" | clean_cron_lines | lookup_run_parts >"${temp}" 

# Add all of the jobs from the system-wide cron directory.
cat "${CRONDIR}"/* | clean_cron_lines >>"${temp}"  # */ <not a comment>

# Add each user's crontab (if it exists). Insert the user's name between the
# five time fields and the command.
while read user ; do
    crontab -l -u "${user}" 2>/dev/null |
        clean_cron_lines |
        sed --regexp-extended "s/^((\S+ +){5})(.+)$/\1${user} \3/" >>"${temp}"
done < <(cut --fields=1 --delimiter=: /etc/passwd)

# Output the collected crontab lines. Replace the single spaces between the
# fields with tab characters, sort the lines by hour and minute, insert the
# header line, and format the results as a table.
cat "${temp}" |
    sed --regexp-extended "s/^(\S+) +(\S+) +(\S+) +(\S+) +(\S+) +(\S+) +(.*)$/\1\t\2\t\3\t\4\t\5\t\6\t\7/" |
    sort --numeric-sort --field-separator="${tab}" --key=2,1 |
    sed "1i\mi\th\td\tm\tw\tuser\tcommand" |
    column -s"${tab}" -t

rm --force "${temp}"

38
कुछ भी नहीं, लेकिन इसने / etc / crontab और /etc/cron.d/ में सिस्टम क्रॉन जॉब्स के बारे में कुछ नहीं किया। उन लोगों के साथ व्यवहार करना, और अंत में सब कुछ प्रारूपित करना, यही मेरी स्क्रिप्ट करती है।
युकुन्दे ३६

10
yukondude - आपको इसे जीथुब पर लगाने पर विचार करना चाहिए, यहां तक ​​कि सिर्फ एक जिस्ट के रूप में।
काइल बर्टन

3
पेस्ट और इसे चलाने के नकल करने की कोशिश की है, लेकिन यह विफल रहता है: showcrons.sh: लाइन 59: सिंटेक्स त्रुटि अप्रत्याशित टोकन के पास <' showcrons.sh: line 59: किया <<(कट --fields = 1 --delimiter =: / etc / पासवर्ड) '
फ्रैगल

2
@ केली बर्टन को लगता है कि कम से कम 8 gists पहले से ही इसे कॉपी कर रहे हैं, gist.github.com/gists/…
Zitrax

9
चेतावनी: इस लिपि से घटनाएँ गायब हैं/etc/anacrontab
ck_

191

उबंटू या डेबियन के तहत, आप crontab द्वारा देख सकते हैं /var/spool/cron/crontabs/और फिर प्रत्येक उपयोगकर्ता के लिए एक फ़ाइल है। यह केवल उपयोगकर्ता के लिए विशिष्ट crontab का है।

रेडहैट 6/7 और सेंटोस के लिए, क्रॉस्टैब के नीचे है /var/spool/cron/


7
यह RedHat (/ var / spool / cron) पर भी काम करता है और स्क्रिप्ट लिखने / चलाने से ज्यादा आसान है, खासकर यदि आप खातों को प्रबंधित करने के लिए Ldap जैसी किसी चीज का उपयोग कर रहे हैं। +1
user49913

6
यह किसी भी अन्य उत्तर की तुलना में मेरे लिए बहुत अधिक उपयोगी था। यह विधि आपको उन उपयोगकर्ताओं के crontabs को देखने की अनुमति देती है जो अब मौजूद नहीं हैं, आपको ओपी के अनुरोध के अनुसार सभी क्रोन नौकरियां प्रदान करते हैं।
एंड्रयू एन्सले

1
इस पद्धति का एक और लाभ: मेरा सर्वर LDAP का उपयोग करता है, इसलिए अधिकांश उपयोगकर्ता इसमें नहीं हैं /etc/passwd। IMO यह सभी ब्रूट-फोर्स समाधानों के बजाय स्वीकृत उत्तर होना चाहिए।
मिकेल

1
यहाँ लिनक्स के साथ अच्छा है।
ब्रेट

Thx, यह AWS EC2 instace के लिए भी सही है, यह जानकारी बहुत मददगार थी!
इवान मारजानोविक

34

यह सभी उपयोगकर्ताओं से सभी crontab प्रविष्टियों को दिखाएगा।

sed 's/^\([^:]*\):.*$/crontab -u \1 -l 2>\&1/' /etc/passwd | grep -v "no crontab for" | sh

30

आपके लिनक्स संस्करण पर निर्भर करता है लेकिन मैं उपयोग करता हूं:

tail -n 1000 /var/spool/cron/*

जड़ के रूप में। बहुत सरल और बहुत कम।

मुझे जैसे आउटपुट देता है:

==> /var/spool/cron/root <==
15 2 * * * /bla

==> /var/spool/cron/my_user <==
*/10 1 * * * /path/to/script

4
tail -n +1 /var/spool/cron/*फ़ाइलों की सभी सामग्री को सूचीबद्ध करने के लिए उपयोग करें ।
हंस गिन्ज़ेल

4
... या sudo sh -c 'tail -n +1 /var/spool/cron/*'यदि आप जड़ नहीं बनना चाहते हैं। मेरे ओसीडी ने मुझे यह जांचने के लिए मजबूर किया कि मैं इस आदेश को लिखित रूप में क्यों नहीं लिख सका। ऐसा इसलिए था क्योंकि नियमित उपयोगकर्ताओं के पास / var / spool / cron dir तक पहुंच नहीं है, और ग्लोब की व्याख्या शाब्दिक स्टार चरित्र के रूप में की जा रही थी, जो स्पष्ट रूप से मौजूद नहीं है।
डेल एंडरसन

वैकल्पिक रूप से, cd /var/spool/cron/cron/ && grep . *प्रत्येक क्रोन जॉब के सामने संबंधित उपयोगकर्ता नाम भी
छपेगा

15

बेहतर उत्पादन प्रारूपण के साथ काइल बर्टन के उत्तर का एक छोटा परिशोधन:

#!/bin/bash
for user in $(cut -f1 -d: /etc/passwd)
do echo $user && crontab -u $user -l
echo " "
done


14
getent passwd | cut -d: -f1 | perl -e'while(<>){chomp;$l = `crontab -u $_ -l 2>/dev/null`;print "$_\n$l\n" if $l}'

यह सीधे पासवार्ड के साथ खिलवाड़ करने से बचता है, उन उपयोगकर्ताओं को छोड़ देता है जिनके पास कोई क्रोन प्रविष्टियाँ नहीं होती हैं और जिनके पास है उनके लिए यह यूज़रनेम के साथ-साथ उनके क्रैटाब को भी प्रिंट करता है।

ज्यादातर इसे यहाँ छोड़ना हालाँकि मैं बाद में इसे पा सकता हूँ अगर मुझे कभी भी इसे फिर से खोजने की जरूरत पड़े।


1
यह उन LDAP उपयोगकर्ताओं को भी सूचीबद्ध करता है जिनमें मौजूद नहीं है /etc/passwd। ऊपर मैट का समाधान इस विशेष स्थिति के लिए अधिक उपयुक्त है, लेकिन यह जानना अच्छा है कि कमांड मौजूद है।
मिकेल

11

यदि आप NIS का उपयोग करके किसी क्लस्टर की जांच करते हैं, तो यह देखने का एकमात्र तरीका है कि क्या उपयोगकर्ता के पास मैट के उत्तर / var / स्पूल / cron / टैब के अनुसार crontab प्रविष्टि ist है।

grep -v "#" -R  /var/spool/cron/tabs


10

इस स्क्रिप्ट ने मेरे लिए पर्यावरण में सभी क्रोनों को सूचीबद्ध करने के लिए CentOS में काम किया:

sudo cat /etc/passwd | sed 's/^\([^:]*\):.*$/sudo crontab -u \1 -l 2>\&1/' | grep -v "no crontab for" | sh

2
बहुत बढ़िया! मैं एक छोटे से बदलाव के लिए जोड़ा देखना जो उपयोगकर्ता क्रॉन जॉब किया जा रहा है और परिणाम के बीच कुछ जगह डाल करने के लिए: cat /etc/passwd | sed 's/^\([^:]*\):.*$/echo "\ncrontab for \1:"; sudo crontab -u \1 -l 2>\&1/' | grep -v "no crontab for" | shके समय एक छोटा सा बचाता है
जमील

9

मुझे ऊपर एक साधारण लाइनर उत्तर पसंद है:

$ में उपयोगकर्ता के लिए (cut -f1 -d: / etc / passwd); crontab -u $ user -l; किया हुआ

लेकिन सोलारिस जिसमें -u झंडा नहीं है और उपयोगकर्ता द्वारा इसकी जांच कर रहे प्रिंट नहीं करता है, आप इसे इस तरह से संशोधित कर सकते हैं:

for user in $(cut -f1 -d: /etc/passwd); do echo User:$user; crontab -l $user 2>&1 | grep -v crontab; done

जब खाता किसी को क्रोन आदि का उपयोग करने की अनुमति नहीं है, तो आपको त्रुटियों की सूची के बिना उपयोगकर्ताओं की एक सूची मिल जाएगी। ध्यान रखें कि सोलारिस में भूमिकाएँ / etc / passwd में भी हो सकती हैं (देखें / etc / user_attr)।



ठंडा। TIL का उपयोग नहीं करने के लिए।
स्क्वैरिज्म


7

निम्नलिखित स्ट्रिप्स टिप्पणी, खाली लाइनों, और बिना crontab वाले उपयोगकर्ताओं की त्रुटियों को दूर करते हैं। आपके द्वारा छोड़ा गया सभी उपयोगकर्ताओं और उनके कार्यों की एक स्पष्ट सूची है।

sudoदूसरी पंक्ति में उपयोग पर ध्यान दें । यदि आप पहले से ही रूट हैं, तो उसे हटा दें।

for USER in $(cut -f1 -d: /etc/passwd); do \
USERTAB="$(sudo crontab -u "$USER" -l 2>&1)";  \
FILTERED="$(echo "$USERTAB"| grep -vE '^#|^$|no crontab for|cannot use this program')";  \
if ! test -z "$FILTERED"; then  \
echo "# ------ $(tput bold)$USER$(tput sgr0) ------";  \
echo "$FILTERED";  \
echo "";  \
fi;  \
done

उदाहरण आउटपुट:

# ------ root ------
0 */6 * * * /usr/local/bin/disk-space-notify.sh
45 3 * * * /opt/mysql-backups/mysql-backups.sh
5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

# ------ sammy ------
55 * * * * wget -O - -q -t 1 https://www.example.com/cron.php > /dev/null

मैं इसका उपयोग उबंटू (12 थ्रू 16) और रेड हैट (5 थ्रू 7) पर करता हूं।


5

आपके क्रोन के संस्करण पर निर्भर करता है। FreeBSD पर विक्सी क्रॉन का उपयोग करना, मैं कुछ इस तरह कर सकता हूं:

(cd /var/cron/tabs && grep -vH ^# *) 

अगर मैं चाहता हूं कि यह अधिक टैब कम हो जाए, तो मैं ऐसा कुछ कर सकता हूं:

(cd /var/cron/tabs && grep -vH ^# * | sed "s/:/      /")

जहां यह सेडल रिप्लेसमेंट पार्ट में शाब्दिक टैब है।

यह में उन लूप करने के लिए और अधिक प्रणाली स्वतंत्र हो सकता है /etc/passwdऔर क्या crontab -l -u $userउनमें से प्रत्येक के लिए।


4

इस बहुत उपयोगी स्क्रिप्ट के लिए धन्यवाद। मुझे पुरानी प्रणालियों पर इसे चलाने में कुछ छोटी समस्याएं थीं (Red Hat Enterprise 3, जो अलग-अलग egrep और टैब को स्ट्रिंग्स में संभालती हैं), और अन्य सिस्टम /etc/cron.d/ में कुछ भी नहीं (फिर एक त्रुटि के साथ समाप्त हुई)। तो यहाँ ऐसे मामलों में काम करने के लिए एक पैच है:

2a3,4
> #See:  http://stackoverflow.com/questions/134906/how-do-i-list-all-cron-jobs-for-all-users
>
27c29,30
<         match=$(echo "${line}" | egrep -o 'run-parts (-{1,2}\S+ )*\S+')
---
>         #match=$(echo "${line}" | egrep -o 'run-parts (-{1,2}\S+ )*\S+')
>         match=$(echo "${line}" | egrep -o 'run-parts.*')
51c54,57
< cat "${CRONDIR}"/* | clean_cron_lines >>"${temp}"  # */ <not a comment>
---
> sys_cron_num=$(ls /etc/cron.d | wc -l | awk '{print $1}')
> if [ "$sys_cron_num" != 0 ]; then
>       cat "${CRONDIR}"/* | clean_cron_lines >>"${temp}"  # */ <not a comment>
> fi
67c73
<     sed "1i\mi\th\td\tm\tw\tuser\tcommand" |
---
>     sed "1i\mi${tab}h${tab}d${tab}m${tab}w${tab}user${tab}command" |

मुझे वास्तव में यकीन नहीं है कि पहले egrep में बदलाव एक अच्छा विचार है, लेकिन अच्छी तरह से, इस स्क्रिप्ट को बिना किसी समस्या के RHEL3,4,5 और डेबियन 5 पर परीक्षण किया गया है। उम्मीद है की यह मदद करेगा!


3

@ केली के ऊपर भवन

for user in $(tail -n +11 /etc/passwd | cut -f1 -d:); do echo $user; crontab -u $user -l; done

आमतौर पर / etc / passwd के शीर्ष पर टिप्पणियों से बचने के लिए,

और मैकोक्स पर

for user in $(dscl . -list /users | cut -f1 -d:); do echo $user; crontab -u $user -l; done    

3
grep -v '^#जादू की संख्या पर भरोसा करने के बजाय आपको नहीं करना चाहिए 11?
आरआर-

1
Red Hat / CentOS डिस्ट्रोस उपयोगकर्ता के क्रेस्टैब की शुरुआत में सहायक संकेत नहीं लिखते हैं, इसलिए पहली 11 पंक्तियों को काट देने से इसकी सामग्री समाप्त हो जाएगी। एक ही बात अगर एक उबंटू उपयोगकर्ता ने अपने स्वयं के कोंट्राब को संपादित किया है और सभी हाथ पकड़े हुए को हटा दिया है।
डेल एंडरसन


3

मुझे लगता है कि एक बेहतर एक लाइनर नीचे होगा। उदाहरण के लिए यदि आपके पास NIS या LDAP में उपयोगकर्ता हैं तो वे / etc / passwd में नहीं होंगे। यह आपको लॉग इन करने वाले प्रत्येक उपयोगकर्ता के crontabs देगा।

for I in `lastlog | grep -v Never | cut -f1 -d' '`; do echo $I ; crontab -l -u $I ; done


3

आप सभी उपयोगकर्ता सूची के लिए लिख सकते हैं:

sudo crontab -u userName -l

,

आप भी जा सकते हैं

cd /etc/cron.daily/
ls -l
cat filename

यह फ़ाइल शेड्यूल को सूचीबद्ध करेगी

cd /etc/cron.d/
ls -l
cat filename

3

माफी के साथ और yukondude के लिए धन्यवाद।

मैंने आसान पढ़ने के लिए समय सेटिंग को संक्षेप में प्रस्तुत करने की कोशिश की है, हालांकि यह एक सही काम नहीं है, और मैं 'हर शुक्रवार' या 'केवल सोमवार के सामान' को नहीं छूता।

यह संस्करण 10 है - यह अब:

  • बहुत तेज दौड़ता है
  • वैकल्पिक प्रगति वर्ण है ताकि आप आगे की गति में सुधार कर सकें।
  • हेडर और आउटपुट को अलग करने के लिए एक विभक्त लाइन का उपयोग करता है।
  • जब सभी समय अंतराल uencountered एक कॉम्पैक्ट प्रारूप में आउटपुट सारांशित किया जा सकता है।
  • जनवरी को स्वीकार करता है ... साल के महीनों के लिए दिसंबर विवरण
  • सोम को स्वीकार करता है ... सप्ताह के दिनों के लिए सूर्य वर्णनकर्ता
  • लापता होने पर एनाक्रॉन के डेबियन-स्टाइल डमी-अप को संभालने की कोशिश करता है
  • Crontab लाइनों से निपटने की कोशिश करता है जो "[-x ...]" का उपयोग करके पूर्व-परीक्षण निष्पादन के बाद एक फ़ाइल चलाते हैं।
  • "कमांड -v" का उपयोग करते हुए पूर्व-परीक्षण निष्पादन के बाद एक फ़ाइल चलाने वाली crontab लाइनों से निपटने की कोशिश करता है
  • अंतराल अंतराल और सूचियों के उपयोग की अनुमति देता है।
  • उपयोगकर्ता-विशिष्ट / var / स्पूल crontab फ़ाइलों में रन-पार्ट्स उपयोग का समर्थन करता है।

मैं अब पूरी तरह से यहां स्क्रिप्ट प्रकाशित कर रहा हूं।

https://gist.github.com/myshkin-uk/d667116d3e2d689f23f18f6cd3c71107


2

चूंकि यह फ़ाइल ( /etc/passwd) के माध्यम से लूपिंग का मामला है और एक कार्रवाई कर रहा है, मैं उचित दृष्टिकोण को याद नहीं कर रहा हूं कि मैं एक फाइल (डेटा स्ट्रीम, चर) लाइन-बाय-लाइन (और / या फ़ील्ड-बाय-फ़ील्ड) कैसे पढ़ सकता हूं )? :

while IFS=":" read -r user _
do
   echo "crontab for user ${user}:"
   crontab -u "$user" -l
done < /etc/passwd

यह क्षेत्र सीमांकक के रूप में /etc/passwdउपयोग करके लाइन को पढ़ता :है। कहकर read -r user _, हम $userपहले क्षेत्र और _बाकी को पकड़ लेते हैं (यह खेतों को अनदेखा करने के लिए सिर्फ एक जंक चर है)।

इस तरह, हम तब crontab -uचर का उपयोग करके कॉल कर सकते हैं $user, जिसे हम सुरक्षा के लिए उद्धृत करते हैं (यदि इसमें रिक्त स्थान हैं, तो यह ऐसी फ़ाइल में संभावना नहीं है, लेकिन आप कभी नहीं जान सकते हैं)।


1

किसी विशेष उपयोगकर्ता नाम के लिए सोलारिस पर:

crontab -l username

अन्य सभी * निक्स को -uसंशोधक की आवश्यकता होगी :

crontab -u username -l

Solaris पर एक बार में सभी उपयोगकर्ता की नौकरी पाने के लिए, ऊपर की अन्य पोस्टों की तरह:

for user in $(cut -f1 -d: /etc/passwd); do crontab -l $user 2>/dev/null; done

-1

मेरे लिए / var / spool / cron / crontabs को देखना सबसे अच्छा तरीका है


2
इससे पहले उत्तर दिया गया है
bummi

-2

यह स्क्रिप्ट Crontab को एक फ़ाइल में आउटपुट करती है और उन सभी उपयोगकर्ताओं को सूचीबद्ध करती है जो पुष्टि करते हैं कि कोई crontab प्रविष्टि नहीं है:

for user in $(cut -f1 -d: /etc/passwd); do 
  echo $user >> crontab.bak
  echo "" >> crontab.bak
  crontab -u $user -l >> crontab.bak 2>> > crontab.bak
done

//, रोबफ्रॉस्ट, क्या आपको यकीन है कि यह स्क्रिप्ट, जैसा कि यहां लिखा गया है, लगातार काम करती है?
नाथन बसानी

देखें कि आप "के लिए" के साथ लाइनें क्यों नहीं पढ़ते हैं । इसके अलावा, यह एक पोस्ट करने से पहले कई बार उत्तर दिया गया है।
फेडोरक्वी 'एसओ ने'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.