ක්‍රෝන් රැකියාවක් කරන විට 'වැඩ කරන නාමාවලිය' යනු කුමක්ද?


184

මා සතුව විධාන රේඛාවෙන් එය ක්‍රියාත්මක වන විට ක්‍රියා කරන ස්ක්‍රිප්ට් එකක් ඇත, නමුත් මම එය උපලේඛනගත කරන විට cronලිපිගොනු හෝ විධාන සොයාගත නොහැකි දෝෂ ඇතිවේ. මගේ ප්‍රශ්නය දෙයාකාර ය:

  1. මම ක්‍රෝන් රැකියාවක් උපලේඛනගත කරන විට crontab -e, එය මගේ පරිශීලක හැඳුනුම්පත එහි අවසර සඳහා පදනම ලෙස භාවිතා කරයිද? නැතහොත් එය යම් ආකාරයක ක්‍රෝන් පරිශීලක හැඳුනුම්පතක් සහ ඊට අදාළ අවසරයන් භාවිතා කරන්නේද?

  2. ක්‍රෝන් ජොබ් එකක් දියත් කළ විට, වැඩ කරන නාමාවලිය කුමක්ද? එය ක්‍රියාත්මක කිරීමට ස්ක්‍රිප්ට් නියම කරන නාමාවලියද, නැතිනම් වෙනත් නාමාවලියක්ද?

මෙන්න මගේ ක්‍රෝන් රැකියාව:

15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh

නියම පිටපත මෙන්න:

vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt

mailනිෂ්පාදිත පණිවිඩය බැලූ විට මට ලැබෙන දෝෂ මෙන්න cron:

sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found

එය සොයාගත නොහැකි template.txtනමුත් එය ස්ක්‍රිප්ටයේ එකම නාමාවලියෙහි වාසය කරයි. එය ක්‍රියාත්මක කළ නොහැක ssmtp, නමුත් මට මගේ පරිශීලකයා ලෙස හැකිය. මෙය නිසියාකාරව ක්‍රියාත්මක කිරීම සඳහා මා අතපසු වී ඇත්තේ කුමක්ද?

Answers:


179

cd /home/xxxx/Documents/Scripts/ඔබේ රැකියාව එම නාමාවලිය තුළ ක්‍රියාත්මක වීමට අවශ්‍ය නම් එකතු කරන්න . ක්‍රෝන් එම විශේෂිත නාමාවලියට වෙනස් වීමට හේතුවක් නැත. ක්‍රොන් ඔබේ විධාන ඔබගේ නිවාස නාමාවලිය තුළ ක්‍රියාත්මක කරයි.

සඳහා පරිදි ssmtp, එය ඔබේ සාමාන්ය විය නොහැකි විය PATH. ක්‍රොන්ගේ පෙරනිමි මාර්ගය ක්‍රියාත්මක කිරීම මත රඳා පවතී, එබැවින් ඔබේ මෑන් පිටුව පරීක්ෂා කරන්න, නමුත් බොහෝ දුරට ඉඩ ssmtpඇත්තේ /usr/sbinඔබේ පෙරනිමියේ නොමැති PATH, මූලයන් පමණි.

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
15 7 * * * cd /home/xxxx/Documents/Scripts && ./email_ip_script.sh

Iles ගයිල්ස් - ස්තූතියි, cronඑය අයිති වේවිද PATHනැත්නම් මගේ පරිශීලකයා පරීක්ෂා කළ PATHහැකිද? ඕනෑම කෙනෙකුට එය භාවිතා කිරීමට ඉඩ දෙනු ඇතැයි සිතමින් (ක්‍රෝන් ද ඇතුළුව) එය ස්වකීය userසහ wheelඅවසරය ලබා ගැනීමට මම එස්එස්එම්ටීපී සකස් කළෙමි . එය සෙන්ටෝස් 6.2 හි මා හට උදව් කරන්නේ නම්
ප්‍රොෆෙෂනල්

4
ProProfessionalAmateur ඔබේ ගැටළුව ඔබට භාවිතා කිරීමට අවසර නොදීම නොවේ ssmtp, නමුත් ඔබේ ක්‍රෝන් රැකියාව මඟින් ක්‍රියාත්මක කළ හැකි කිසිවක් සොයාගත නොහැකි ssmtpවීම එය ඔබගේ නොවන නිසාය PATH. “ඔබේ පරිශීලකයාගේ” දෙයක් නැත PATH; මෙය එක් එක් ක්‍රියාවලියට සැකසීමක් මිස පරිශීලක සැකසුමකි. ඔබේ ක්‍රොන්ටාබ් එකේ PATH=…රේඛාවක් තැබීමෙන් ඔබේ සියලු ක්‍රෝන් රැකියා සඳහා මාර්ගය සැකසිය හැකිය .
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

PATH සැකසුම සමඟ එය ක්‍රියාත්මක කිරීම සඳහා මට MAILTO='XXXX@gmail.com ද එක් කිරීමට සිදුවිය. වයර්ඩ් නමුත් එය මට වැඩ කළා.
මැක්

Ssmtp සඳහා කෙනෙකුට භාවිතා කළ හැකිය; ´which ssmtp´ ...
ෆෙඩ්රික් ගෝස්


25

ඔබේ ක්‍රොන්ජොබ් බාෂ් ස්ක්‍රිප්ට් එකක් නම්, පහත දැක්වෙන්නේ ඔබේ ස්ක්‍රිප්ටයේ පිහිටීම සීඩී තැටියක් වනු ඇත (ඔබේ ක්‍රෝන් අර්ථ දැක්වීමේදී ඔබ නිරපේක්ෂ මාර්ගය භාවිතා කරයි යැයි උපකල්පනය කරයි):

cd "$(dirname "$0")";

16

1 වන ප්‍රශ්නයට පිළිතුරු සැපයීම සඳහා: ඔබ crontab -eඔබේම පරිශීලකයෙකු ලෙස ධාවනය කරන්නේ නම්, එම පරිශීලකයාගේ ක්‍රොන්ටාබ් තුළ රැකියා උපලේඛනගත වන අතර එමඟින් එම පරිශීලකයාගේ අවසරය ඇතිව ක්‍රියාත්මක වේ.

නමුත් රැකියා අන්තර්ක්‍රියාකාරී නොවන කවචයකින් ක්‍රියාත්මක වන බව ඔබ සලකා බැලිය යුතුය, එයින් අදහස් වන්නේ විධාන රේඛාවෙන් ස්ක්‍රිප්ට් ධාවනය කිරීමේදී $ PATH ඔබ සතුව ඇති ක්‍රමයට වඩා වෙනස් විය හැකි බවයි.

ස්ක්‍රිප්ට් වල සෑම විටම සම්පූර්ණ මාර්ග භාවිතා කිරීම වඩාත් සුදුසුය, විශේෂයෙන් ඔබ ඒවා / ක්‍රෝන් ආදිය හරහා උපලේඛනගත කිරීමට අදහස් කරන්නේ නම්.

ඔබ දකින ගැටලු වළක්වා ගැනීම සඳහා සියලු ලිපිගොනු සඳහා සම්පූර්ණ මාර්ග භාවිතා කිරීමට මම නිර්දේශ කරමි.

ධාවන තත්වයන් සහ වෙනත් ආරක්ෂක ගැටළු වලක්වා ගැනීම සඳහා mktempඔබ කියවන ගොනුව ඔබගේ ස්ක්‍රිප්ටයෙන් පිටත කිසිවක් වෙනස් කර නොමැති බව තහවුරු කර ගැනීමටද භාවිතා කළ යුතුය .

ඒ නිසා මම පිටපත මේ වගේ දෙයකට වෙනස් කරනවා:

vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
mail_msg=`/bin/mktemp`
/bin/sed "s/IPADDR/$vIP_ADDR/g" /home/xxxx/Documents/Scripts/template.txt > $mailmsg
/path/to/ssmtp XXXXX@gmail.com < $mailmsg
/bin/rm $mailmsg

8

cronඑක් එක් පරිශීලකයාගේ නියමිත කාර්යයන් එම පරිශීලකයා ලෙස ක්‍රියාත්මක කරයි. ඔබගේ නිවාස නාමාවලියට සාපේක්ෂව එය ඔබගේ ස්ක්‍රිප්ට් ධාවනය කරන බව අපට දැන ගැනීමට මෙය ප්‍රමාණවත් විය යුතුය.

ඔබට එය වෙනත් ස්ථානයකින් ධාවනය කිරීමට අවශ්‍ය නම්, cdඑම ස්ථානයට යාමට ඔබේ ස්ක්‍රිප්ට් එක භාවිතා කරන්න.

ssmtpබොහෝ විට cronපෙරනිමි PATH හි නොමැත (බොහෝ වේදිකාවල සැලසුම අනුව එය ඉතා පටු ලෙස සකසා ඇත). ඔබට ssmtpඔබගේ ස්ක්‍රිප්ටයේ සම්පූර්ණ මාර්ගය නියම කළ හැකිය , නැතහොත් ඔබට පැහැදිලිවම අ) අ) ඔබේ ක්‍රොන්ටාබ් ගොනුව, ඔබේ සියලුම ස්ක්‍රිප්ට් සඳහා ලබා ගත හැකිය, නැතහොත් ආ) සෑම ස්ක්‍රිප්ට් එකකම PATH සැකසිය හැකිය.


3

ක්‍රෝන්ගේ පරිසරය ඔබට පහසුවෙන් සොයාගත හැකි ආකාරය මෙම නූලෙන් පරීක්ෂා කරන්න , එය අන්තර්ක්‍රියාකාරී කවචයක ඔබ පුරුදු වී ඇති ප්‍රමාණයට වඩා බෙහෙවින් අඩුය. හොඳම දෙය නම් කිසිවක් සකසා නැති බව උපකල්පනය කර එය ඔබම පැහැදිලිවම සකසා ගැනීමයි.


2

cronකාර්යය ක්‍රියාත්මක කිරීමේදී පෙරනිමි වැඩ කරන නාමාවලිය සාමාන්‍යයෙන් නිවාස නාමාවලියයි /home/your-user-name.

Us කුසලානන්ද විශිෂ්ට අදහස් දැක්වීම.


1
එය නිවාස නාමාවලි තබා ගන්නේ කොතැනද යන්න මත රඳා පවතී. /homeවිශ්වීය නොවේ.
කුසලනන්ද

1
කුසලානන්ද එල්එස්බී ප්‍රමිතිය පවසයි /home.
පීටර් - මොනිකා

1
etpeterh හොඳයි, මැකෝස් භාවිතය /Usersසහ Un තිහාසික යුනිසස් භාවිතය /usr, සහ ලිනක්ස් වල පවා, පද්ධති භාවිතා කරන්නෙකුගේ නිවාස නාමාවලිය කොතැනක /varහෝ වෙනත් තැනක විය හැකිය.
කුසලානන්ද

1
Us කුසලනන්ද එය හරි.
පීටර් - මොනිකා

ස්තූතියි, මෙම ප්‍රශ්නයට සැබවින්ම පිළිතුරු දුන් එකම පුද්ගලයා
ඔබයි

0

සමහර අය ඒ ගැන ඉඟි කර හෝ සම්බන්ධ කර ඇති නමුත් මගේ ඩිස්ට්‍රෝ සඳහා මිනිසාගේ ලියකියවිලි තුළ එය සොයාගත නොහැකි බැවින් සොයා ගැනීමට ඇති හොඳම ක්‍රමය මෙය ක්‍රෝන් එකකට එක් කිරීම පමණි

* * * * * echo $PATH > /tmp/lolcronjobs

මගේ නඩුවේදී උබුන්ටු පෙරනිමියෙන් භාවිතා කිරීම පමණක් /usr/bin:/binගැටළු කිහිපයක් ඇති විය.

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.