আমি কীভাবে সমস্ত ব্যবহারকারীর জন্য সমস্ত ক্রোন জব তালিকা করব?


854

এমন কোনও কমান্ড বা বিদ্যমান স্ক্রিপ্ট যা আমাকে * এনআইএক্স সিস্টেমের নির্ধারিত ক্রোন জবগুলি একবারে দেখতে দেবে? আমি এটি ব্যবহারকারীর ক্রন্টাবগুলি, সেইসাথে /etc/crontabএবং যা কিছু আছে তা অন্তর্ভুক্ত করতে চাই /etc/cron.d। এছাড়া দ্বারা চালানো নির্দিষ্ট কমান্ড দেখতে সুন্দর হবে run-partsমধ্যে /etc/crontab

আদর্শভাবে, আমি আউটপুটটি একটি সুন্দর কলাম আকারে পছন্দ করতে এবং কিছু অর্থপূর্ণ উপায়ে অর্ডার করতে চাই।

এরপরে আমি সামগ্রিক "ইভেন্টের সময়সূচী" দেখার জন্য এই তালিকাগুলি একাধিক সার্ভার থেকে মার্জ করতে পারি।

আমি নিজেই এই জাতীয় স্ক্রিপ্ট লিখতে চলেছিলাম, তবে যদি কেউ ইতিমধ্যে সমস্যার দিকে চলে যায় ...


2
ইউনিক্স এসই তে অনুরূপ প্রশ্ন: unix.stackexchange.com/questions/7053/…
ম্যাক্সচলেপজিগ

উত্তর:


1131

আপনাকে এটি রুট হিসাবে চালাতে হবে তবে:

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

প্রতিটি ব্যবহারকারীর নাম তাদের ক্রন্টব তালিকাভুক্ত করে লুপ করবে। ক্রোনট্যাবগুলি সংশ্লিষ্ট ব্যবহারকারীদের মালিকানাধীন তাই আপনি অন্য ব্যবহারকারীর ক্রন্টাব ডাব্লু / ও সেগুলি বা মূল হিসাবে দেখতে পারবেন না।


আপনি যদি কোনও ক্রন্টাব ব্যবহার করেন তবে তা ব্যবহার করতে চান তা সম্পাদনা করুনecho $user

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

52
ব্যবহারকারীরা যখন এনআইএস বা এলডিএপ সংজ্ঞায়িত হয় তখন কাজ করে না। আপনার ব্যবহার করতে হবে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 / ক্রোন ফাইলগুলি দেখতে কি সহজ হবে না?
ধুসর

1
আমাদের এলডিএপি এবং / ইত্যাদি / পাসডাব্লুটি জেন্টেন্ট কমান্ডের সাথে প্রতিস্থাপন করা দরকার: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
ইউকনডুড - আপনার গিথুবকে এমনকি গিস্ট হিসাবে লাগানো বিবেচনা করা উচিত।
কাইল বার্টন

3
পেস্টটি অনুলিপি করার জন্য এবং এটি চালনার চেষ্টা করা হয়েছে, তবে এটি ব্যর্থ হয়েছে: showcrons.sh: লাইন 59: অপ্রত্যাশিত টোকেনের নিকটে সিনট্যাক্স ত্রুটি <' showcrons.sh: line 59: <<(কাট - ফিল্ডস = 1 --ডেলিমিটার =: / ইত্যাদি / পাসডাব্লু) '
ফ্রেগল

2
@ কাইলবার্টন মনে হয়েছে কমপক্ষে 8 জন লোক ইতিমধ্যে এটি অনুলিপি করেছেন gist.github.com/gists/…
জিত্রাটक्स

9
সতর্কতা: এই স্ক্রিপ্টটিতে ইভেন্টগুলি অনুপস্থিত রয়েছে/etc/anacrontab
ck_

191

উবুন্টু বা ডেবিয়ানের অধীনে আপনি ক্রন্টব দেখতে পারেন /var/spool/cron/crontabs/এবং তারপরে প্রতিটি ব্যবহারকারীর জন্য একটি ফাইল সেখানে রয়েছে। এটি কেবল ব্যবহারকারী-নির্দিষ্ট ক্রন্টাবের অবশ্যই।

রেডহাট 6/7 এবং সেন্টোসের জন্য ক্রন্টব অধীন রয়েছে /var/spool/cron/


7
এটি রেডহ্যাটটিতেও (/ var / spool / ক্রোন) কাজ করে এবং স্ক্রিপ্ট লেখা / চালানো থেকে সহজ, বিশেষত যদি আপনি অ্যাকাউন্টগুলি পরিচালনা করতে Ldap এর মতো কিছু ব্যবহার করেন। +1
ব্যবহারকারী49913

6
অন্যান্য উত্তরগুলির তুলনায় এটি আমার পক্ষে অনেক বেশি সহায়ক ছিল। এই পদ্ধতিটি আপনাকে অপারেটরদের অনুরোধ অনুসারে সমস্ত ক্রোন জব প্রদান করে ব্যবহারকারীদের ক্রোনট্যাবগুলি দেখতে পাবে না।
অ্যান্ড্রু এনসলে

1
এই পদ্ধতির আরেকটি সুবিধা: আমার সার্ভারটি এলডিএপি ব্যবহার করে, তাই বেশিরভাগ ব্যবহারকারীর মধ্যে নেই /etc/passwd। আইএমও এটি হ'ল বর্বর-সমাধানের সমাধানগুলির পরিবর্তে গ্রহণযোগ্য উত্তর হওয়া উচিত।
মিক্কেল

1
সুস লিনাক্স এখানে ভাল।
ব্রেট

থেক্স, এডাব্লুএস ইসি 2 ইনস্টাসের ক্ষেত্রেও এটি সত্য, এই তথ্যটি খুব সহায়ক ছিল!
ইভান মার্জানোভিক

34

এটি সমস্ত ব্যবহারকারীর সমস্ত ক্রন্টব্যাক এন্ট্রি প্রদর্শন করবে।

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 / ক্রোন দির অ্যাক্সেস নেই এবং গ্লোবটি একটি আক্ষরিক তারকা চরিত্র হিসাবে ব্যাখ্যা করা হচ্ছে, যা সম্ভবত উপস্থিত নেই।
ডেল অ্যান্ডারসন

বিকল্পভাবে, 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
এটি উপস্থিত নেই এমন এলডিএপি ব্যবহারকারীদেরও তালিকাভুক্ত করে /etc/passwd। উপরের ম্যাট এর সমাধান এই নির্দিষ্ট পরিস্থিতির জন্য আরও উপযুক্ত, তবে কমান্ডটি বিদ্যমান তা জেনে রাখা ভাল।
মিক্কেল

11

আপনি যদি এনআইএস ব্যবহার করে একটি ক্লাস্টার পরীক্ষা করেন তবে ম্যাট এর উত্তর / বর্ণ / স্পুল / ক্রোন / ট্যাব অনুসারে কোনও ব্যবহারকারীর ক্রন্টব এন্ট্রি নেই কিনা তা দেখার একমাত্র উপায়।

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


10

এই স্ক্রিপ্টটি পরিবেশের সমস্ত ক্রোনগুলির তালিকা তৈরি করতে আমার জন্য সেন্টোসে কাজ করেছিল:

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

আমি উপরে ওপরের সরল এক-লাইন উত্তরটি পছন্দ করি:

$ (কাট -f1 -d: / ইত্যাদি / পাসডাব্লু) ব্যবহারকারীর জন্য; crontab -u $ ব্যবহারকারী -l করুন; সম্পন্ন

তবে সোলারিস যার কাছে -u পতাকা নেই এবং এটি যাচাই করা ব্যবহারকারীর মুদ্রণ করে না, আপনি এটি এর মতো এটি সংশোধন করতে পারেন:

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

ক্রোনটব দ্বারা ত্রুটিযুক্ত ত্রুটিগুলি ছাড়াই আপনি ব্যবহারকারীর একটি তালিকা পাবেন যখন কোনও অ্যাকাউন্ট ক্রোন ব্যবহারের অনুমতি না দিলে সচেতন হন সোলারিসে, ভূমিকাগুলি / ইত্যাদি / পাসওডিতেও থাকতে পারে (দেখুন / ইত্যাদি / ব্যবহারকারী_আউটআর)।



কুল। টিআইএল এর জন্য ব্যবহার না করা।
স্কোয়ারিজম

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

আপনি কেন "জন্য" দিয়ে লাইন পড়েন না তা দেখুন । এছাড়াও, এই উত্তরটি কেবল অন্যকে পুনরাবৃত্তি করে।
ফেডরকিই 'এসও ক্ষতিগ্রস্থ হওয়া বন্ধ করুন'

7

নীচের স্ট্রিপগুলি কোনও মন্তব্য না করে ব্যবহারকারীদের মন্তব্য, খালি লাইন এবং ত্রুটিগুলি সরিয়ে ফেলে। আপনার কাছে থাকা সমস্ত ব্যবহারকারীর এবং তাদের কাজের একটি পরিষ্কার তালিকা clear

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 এর মাধ্যমে 5) এ ব্যবহার করব।


5

আপনার ক্রোন এর সংস্করণ উপর নির্ভর করে। ফ্রিবিএসডি-তে ভিক্সি ক্রোন ব্যবহার করে, আমি এরকম কিছু করতে পারি:

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

যদি আমি এটি আরও ট্যাব সীমিত করতে চান তবে আমি এটির মতো কিছু করতে পারি:

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

যেখানে সেড রিপ্লেসমেন্ট অংশটিতে একটি আক্ষরিক ট্যাব।

এটি ব্যবহারকারীদের মধ্যে লুপ করা /etc/passwdএবং crontab -l -u $userতাদের প্রত্যেকের জন্য করা আরও স্বতন্ত্র সিস্টেম হতে পারে ।


4

এই খুব দরকারী স্ক্রিপ্ট জন্য ধন্যবাদ। পুরানো সিস্টেমগুলিতে এটি চালাতে আমার কিছু ক্ষুদ্র সমস্যা ছিল (রেড হ্যাট এন্টারপ্রাইজ 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

মন্তব্যগুলি সাধারণত / ইত্যাদি / পাসডাব্লুডের শীর্ষে এড়াতে,

এবং ম্যাকোসেক্সে

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

3
আপনার grep -v '^#'ম্যাজিক সংখ্যার উপর নির্ভর করার পরিবর্তে উচিত নয় 11?
rr-

1
রেড হ্যাট / সেন্টোস ডিস্ট্রস ব্যবহারকারীর ক্রোনট্যাব শুরু করার সময় সহায়ক ইঙ্গিতগুলি লেখেন না, সুতরাং প্রথম 11 টি লাইন কেটে ফেলা হলে এটির সামগ্রী মুছে যাবে ite একই জিনিস যদি কোনও উবুন্টু ব্যবহারকারী তাদের নিজস্ব ক্রোনটাব সম্পাদনা করে সমস্ত হাত ধরে রাখে।
ডেল অ্যান্ডারসন


3

আমি মনে করি আরও ভাল একটি লাইনার নীচে হবে। উদাহরণস্বরূপ আপনার যদি এনআইএস বা এলডিএপ ব্যবহারকারী থাকে তবে তারা / ইত্যাদি / পাসডাব্লুডে থাকতে পারবেন না। এটি আপনাকে লগ ইন করা প্রতিটি ব্যবহারকারীর ক্রন্টাবগুলি দেবে।

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

ক্ষমা চেয়ে এবং ইউকনডুডকে ধন্যবাদ দিয়ে।

আমি সহজ পড়ার জন্য সময় নির্ধারণের সংক্ষিপ্তসার চেষ্টা করেছি, যদিও এটি নিখুঁত কাজ নয় এবং আমি 'প্রতি শুক্রবার' বা 'শুধুমাত্র সোমবারে' জিনিসগুলি স্পর্শ করি না।

এটি সংস্করণ 10 - এটি এখন:

  • অনেক বেশি দ্রুত চালায়
  • progressচ্ছিক অগ্রগতির অক্ষর রয়েছে যাতে আপনি আরও গতি উন্নত করতে পারেন।
  • শিরোনাম এবং আউটপুট পৃথক করতে একটি বিভাজক লাইন ব্যবহার করে।
  • একটি সংক্ষিপ্ত বিন্যাসে আউটপুটগুলি যখন সমস্ত সময়সীমা বিরতিহীন হয় সংক্ষিপ্ত করা যায়।
  • জান্নাত গ্রহণ করে ... বছরের বছরের মাসের জন্য ডিসেম্বর বর্ণনাকারী
  • সোম গ্রহণ করে ... সপ্তাহের কয়েক দিনের জন্য সূর্যের বর্ণনাকারী
  • অ্যানাক্রোন অনুপস্থিত থাকাতে ডিবিয়ান-স্টাইলের ডামিইং আপ হ্যান্ডেল করার চেষ্টা করে
  • "[-x ...]" ব্যবহার করে প্রাক-পরীক্ষামূলক এক্সিকিউটিভিটির পরে একটি ফাইল চালিত ক্রন্টব লাইনগুলির সাথে কাজ করার চেষ্টা করে
  • "কমান্ড -v" ব্যবহার করে প্রাক-টেস্টিং এক্সিকিউটিভিটির পরে একটি ফাইল চালিত ক্রন্টব লাইনগুলির সাথে কাজ করার চেষ্টা করে
  • বিরতি স্প্যান এবং তালিকাগুলি ব্যবহারের অনুমতি দেয়।
  • ব্যবহারকারী-নির্দিষ্ট / var / স্পুল ক্রন্টব ফাইলগুলিতে রান-পার্টস ব্যবহার সমর্থন করে।

আমি এখন এখানে পুরো স্ক্রিপ্ট প্রকাশ করছি।

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

সোলারিসে একবারে সমস্ত ব্যবহারকারীর কাজ পাওয়ার জন্য, উপরের অন্যান্য পোস্টগুলির মতো:

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

-1

আমার জন্য / ভার / স্পুল / ক্রোন / ক্রন্টাবগুলি দেখুন সেরা উপায়


2
এর আগে উত্তর দেওয়া হয়েছে
বম্মি

-2

এই স্ক্রিপ্টটি কোনও ফাইলে ক্রন্টবকে আউটপুট করে এবং সমস্ত ব্যবহারকারীকে তালিকাভুক্ত করে যা কোনও ক্রন্টব প্রবেশ নেই:

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

//, রবফ্রস্ট, আপনি কি নিশ্চিত যে এই লিপিটি এখানে লিখিতভাবে ধারাবাহিকভাবে কাজ করে?
নাথান বাসানিজ

আপনি কেন "জন্য" দিয়ে লাইন পড়েন না তা দেখুন । এছাড়াও, আপনি এটি পোস্ট করার আগে এটির বহুবার উত্তর দেওয়া হয়েছে।
ফেডরকিই 'এসও ক্ষতিগ্রস্থ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.