සියලුම පරිශීලකයින් සඳහා සියලුම ක්‍රෝන් රැකියා ලැයිස්තුගත කරන්නේ කෙසේද?


868

* NIX පද්ධතියේ සියලුම ක්‍රෝන් රැකියා එකවර බැලීමට මට ඉඩ දෙන විධානයක් හෝ පවතින ස්ක්‍රිප්ට් එකක් තිබේද? සියලුම පරිශීලක ක්‍රොන්ටැබ් මෙන්ම ඇතුළත් කර ඇති /etc/crontabඕනෑම දෙයක් ඇතුළත් කිරීමට මම කැමතියි /etc/cron.d. එය ද විසින් ගෙන යනු ලබන විශේෂිත විධාන දැකීම සතුටක් වනු ඇත run-partsතුල /etc/crontab.

ඉතා මැනවින්, මම නිමැවුමට හොඳ තීරු ආකාරයකට කැමතියි.

සමස්ත "සිදුවීම් කාලසටහන" බැලීමට මට මෙම ලැයිස්තු බහුවිධ සේවාදායකයන්ගෙන් ඒකාබද්ධ කළ හැකිය.

මම එවැනි පිටපතක් ලිවීමට සූදානම්ව සිටියෙමි, නමුත් යමෙකු දැනටමත් කරදරයට පත්වී ඇත්නම් ...


2
යුනික්ස් SE හි සමාන ප්‍රශ්නයක්: unix.stackexchange.com/questions/7053/…
maxschlepzig

Answers:


1148

ඔබට මෙය root ලෙස ධාවනය කිරීමට සිදුවේ, නමුත්:

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

සෑම පරිශීලක නාමයක්ම ඔවුන්ගේ crontab ලැයිස්තුගත කරයි. Crontabs අයිති පරිශීලකයින් සතු බැවින් ඔබට වෙනත් පරිශීලකයෙකුගේ crontab w / o ඒවා හෝ root ලෙස දැකිය නොහැක.


ක්‍රොන්ටාබ් අයත් වන්නේ කුමන පරිශීලකයාට දැයි දැන ගැනීමට අවශ්‍ය නම් සංස්කරණය කරන්නecho $user

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

55
පරිශීලකයින් NIS හෝ LDAP හි අර්ථ දක්වා ඇති විට ක්‍රියා නොකරයි. ඔබ භාවිතා කිරීමට අවශ්‍යයිfor user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done
හියුබට් කාරියෝ

10
අදහස් බැහැර කිරීම සහ 'පරිශීලකයා සඳහා ක්‍රොන්ටාබ් නැත ...' පණිවිඩ යටපත් කිරීම සඳහා මෙය යාවත්කාලීන කරන ලදි:for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null | grep -v '^#'; done
ජොනතන්

39
/ Var / spool / cron හි ඇති ලිපිගොනු බැලීම පහසු නොවේද?
අළු පා

2
අපි LDAP සහ / etc / passwd ලබා ගැනීම විධානය සමඟ ප්‍රතිස්ථාපනය කළ යුතුයි:for user in $(getent passwd | awk -F : '{print $1}'); do echo $user; crontab -u $user -l; done
ටෝබි කණ්ඩායම

9
දේ දී ක්රෝන්ජොබ් ගැන /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/...?
අබ්දුල්

315

මම පිටපතක් ලිවීම අවසන් කළෙමි (මම උත්සාහ කරන්නේ බාෂ් ස්ක්‍රිප්ටින්හි හොඳම කරුණු මට ඉගැන්වීමටයි, එබැවින් ඔබ මෙහි පර්ල් වැනි දෙයක් නොදකින නිසා). එය හරියටම සරල කටයුත්තක් නොවේ, නමුත් එය මට අවශ්‍ය බොහෝ දේ කරයි. එය තනි තනි පරිශීලකයන් '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/ හි පද්ධති ක්‍රෝන් රැකියා ගැන කිසිවක් කළේ නැත. ඒවා සමඟ කටයුතු කිරීම සහ සියල්ල අවසානයේ හැඩතල ගැන්වීම මගේ පිටපත කරයි.
yukondude

10
yukondude - සාරාංශයක් ලෙස වුවද මෙය ගිතුබ් මත තැබීම ගැන සලකා බැලිය යුතුය.
කයිල් බර්ටන්

3
ඇලවීම සහ ක්රියාත්මක පිටපත් කිරීමට උත්සාහ කළ නමුත් එය අසාර්ථක: showcrons.sh: මාර්ගය 59: අනපේක්ෂිත සංකේත අසල කාරක රීති දෝෂයක් <' showcrons.sh: line 59: සිදු <<(සැපයුම අත්හිටුවන --fields = 1 --delimiter =: / etc / passwd) '
Fraggle

2
Yle කයිල්බර්ටන් මේ වන විටත් අවම වශයෙන් සාරාංශ 8 ක් වත් පිටපත් කර ඇති බව පෙනේ, gist.github.com/gists/…
සිට්‍රැක්ස්

9
අවවාදයයි: මෙම පිටපතට සිදුවීම් නොමැත/etc/anacrontab
ck_

195

උබුන්ටු හෝ ඩෙබියන් යටතේ, ඔබට ක්‍රොන්ටාබ් නැරඹිය හැකි /var/spool/cron/crontabs/අතර එක් එක් පරිශීලකයා සඳහා ගොනුවක් එහි තිබේ. එය ඇත්ත වශයෙන්ම පරිශීලක-විශේෂිත ක්‍රොන්ටාබ් සඳහා පමණි.

Redhat 6/7 සහ Centos සඳහා, crontab යටතේ පවතී /var/spool/cron/.


7
මෙය RedHat හි (/ var / spool / cron) ද ක්‍රියාත්මක වන අතර ස්ක්‍රිප්ට් එකක් ලිවීමට / ධාවනය කිරීමට වඩා පහසුය, විශේෂයෙන් ඔබ ගිණුම් කළමනාකරණය සඳහා Ldap වැනි දෙයක් භාවිතා කරන්නේ නම්. +1
user49913

6
අනෙක් පිළිතුරු වලට වඩා මෙය මට බෙහෙවින් ප්‍රයෝජනවත් විය. මෙම ක්‍රමය මඟින් තවදුරටත් නොපවතින පරිශීලකයින්ගේ ක්‍රොන්ටාබ් බැලීමට ඔබට ඉඩ සලසයි.
ඇන්ඩ rew එන්ස්ලි

1
මෙම ක්‍රමයට තවත් වාසියක්: මගේ සේවාදායකය LDAP භාවිතා කරයි, එබැවින් බොහෝ පරිශීලකයින් එහි නොමැත /etc/passwd. IMO මෙය සියලු තිරිසන් බල විසඳුම් වලට වඩා පිළිගත් පිළිතුර විය යුතුය.
මිකෙල්

1
Suse Linux සමඟ මෙහි හොඳයි.
බ්‍රෙට්

ස්තූතියි, මෙය AWS EC2 නිදර්ශනය සඳහා ද සත්‍ය වේ, මෙම තොරතුරු ඉතා ප්‍රයෝජනවත් විය!
අයිවන් මාජනොවික්

34

මෙය සියලු පරිශීලකයින්ගේ සියලුම ක්‍රොන්ටාබ් ඇතුළත් කිරීම් පෙන්වනු ඇත.

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

30

ඔබගේ ලිනක්ස් අනුවාදය මත රඳා පවතී, නමුත් මම භාවිතා කරන්නේ:

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

root ලෙස. ඉතා සරල හා ඉතා කෙටි.

මට ප්‍රතිදානය ලබා දෙන්නේ:

==> /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/*'ඔබට මූල වීමට අවශ්‍ය නැතිනම් . මගේ OCD විසින් මට මෙම විධානය ලිවීමට නොහැකි වූයේ මන්දැයි සොයා බැලීමට බල කෙරුනි. නිත්‍ය පරිශීලකයින්ට / 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 / spool / cron / tabs අනුව crontab ඇතුළත් කිරීමක් තිබේදැයි බැලීමට ඇති එකම ක්‍රමයයි.

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
ප්‍රති results ල

9

ඉහත සරල එක්-ලයිනර් පිළිතුරට මම කැමතියි:

$ හි පරිශීලකයා සඳහා (cut -f1 -d: / etc / passwd); do 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

පහත දැක්වෙන ඉරි වලින් අදහස්, හිස් රේඛා සහ දෝෂයන් ක්‍රොන්ටාබ් නොමැති පරිශීලකයින්ගෙන් ඉවත් වේ. ඔබට ඉතිරිව ඇත්තේ පරිශීලකයින්ගේ පැහැදිලි ලැයිස්තුවක් සහ ඔවුන්ගේ රැකියා පමණි.

sudo2 වන පේළියේ භාවිතය සැලකිල්ලට ගන්න . ඔබ දැනටමත් root නම්, එය ඉවත් කරන්න.

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 thru 16) සහ Red Hat (5 thru 7) මත භාවිතා කරමි.


5

ඔබගේ ක්‍රෝන් අනුවාදය මත රඳා පවතී. FreeBSD හි Vixie cron භාවිතා කරමින් මට මේ වගේ දෙයක් කළ හැකිය:

(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, වෙනස් ලෙස උදාසීන හා නූල්වල ටැබ් හසුරුවන), සහ /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 සහ Debian5 මත පරීක්ෂා කර ඇත. මෙය උපකාරී වේ යැයි සිතමු!


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?
rr-

1
Red Hat / CentOS distros භාවිතා කරන්නෙකුගේ crontab ආරම්භයේ දී ප්‍රයෝජනවත් ඉඟි ලියන්නේ නැත, එබැවින් පළමු පේළි 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

සොලාරිස් හි, විශේෂිත දන්නා පරිශීලක නාමයක් සඳහා:

crontab -l username

අනෙක් සියලුම * නික්ස් වලට -uවිකරණකාරකය අවශ්‍ය වේ :

crontab -u username -l

ඉහත සඳහන් අනෙකුත් තනතුරු මෙන් බොහෝ පරිශීලකයින්ගේ රැකියා එකවර සොලාරිස් වෙතින් ලබා ගැනීමට:

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

3

සමාව අයදිමින් සහ යුකොන්ඩූඩ්ට ස්තූතියි.

මම පරිපූර්ණ කියවීමක් සඳහා කාල සැකසුම් සාරාංශ කිරීමට උත්සාහ කර ඇත්තෙමි, එය පරිපූර්ණ රැකියාවක් නොවූවත්, මම 'සෑම සිකුරාදා දිනකම' හෝ 'සඳුදා දිනවල පමණක්' ස්පර්ශ නොකරමි.

මෙය 10 වන අනුවාදයයි - එය දැන්:

  • වඩා වේගයෙන් ධාවනය වේ
  • විකල්ප ප්‍රගති අක්ෂර ඇති බැවින් ඔබට වේගය තවදුරටත් දියුණු කළ හැකිය.
  • ශීර්ෂකය සහ ප්‍රතිදානය වෙන් කිරීමට බෙදුම් රේඛාවක් භාවිතා කරයි.
  • ගණනය නොකළ සියලුම කාල පරතරයන් සාරාංශගත කළ විට සංයුක්ත ආකෘතියකින් ප්‍රතිදානයන්.
  • අවුරුද්දේ මාස සඳහා ජනවාරි ... දෙසැම්බරයේ විස්තර කරන්නන් පිළිගනී
  • මොන් පිළිගනී ... සතියේ දින සඳහා සූර්ය විස්තර
  • ඇනක්‍රොන් අතුරුදහන් වූ විට ඩෙබියන් විලාසිතාවේ ඩම්මිං-අප් හැසිරවීමට උත්සාහ කරයි
  • "[-x ...]" භාවිතා කර පූර්ව පරීක්‍ෂා කිරීමෙන් පසු ගොනුවක් ධාවනය කරන ක්‍රොන්ටාබ් රේඛා සමඟ කටයුතු කිරීමට උත්සාහ කරයි.
  • "විධානය -v" භාවිතා කර පූර්ව පරීක්‍ෂා කිරීමෙන් පසු ගොනුවක් ධාවනය කරන ක්‍රොන්ටාබ් රේඛා සමඟ කටයුතු කිරීමට උත්සාහ කරයි.
  • කාල පරතරයන් සහ ලැයිස්තු භාවිතා කිරීමට ඉඩ දෙයි.
  • පරිශීලක-විශේෂිත / var / spool 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

මට නම් / var / spool / cron / crontabs හොඳම ක්‍රමයයි


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

//, රොබ්ෆ්‍රොස්ට්, මෙම පිටපත මෙහි ලියා ඇති පරිදි නිරන්තරයෙන් ක්‍රියාත්මක වන බව ඔබට විශ්වාසද?
නේතන් බසානිස්

ඔබ "සඳහා" සමඟ පේළි නොකියන්නේ මන්දැයි බලන්න . එසේම, ඔබ මෙය පළ කිරීමට පෙර බොහෝ වාර ගණනක් පිළිතුරු ලබා දී ඇත.
fedorqui 'SO හානිය නවත්වන්න'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.