ম্যানুয়ালি এবং তাত্ক্ষণিকভাবে ক্রোন জব চালানো


108

(আমি ইতিমধ্যে পড়েছি আমি কীভাবে একটি নতুন ক্রোন স্ক্রিপ্ট পরীক্ষা করতে পারি? )

আমার একটি নির্দিষ্ট সমস্যা আছে (ক্রোন জবটি চলমান, বা সঠিকভাবে চালানোর জন্য প্রদর্শিত হয় না) তবে সমস্যাটি সাধারণ: আমি ক্রনিকড স্ক্রিপ্টগুলি ডিবাগ করতে চাই। আমি সচেতন যে আমি একটি * * * * * ক্রন্টব লাইন স্থাপন করতে পারি তবে এটি সম্পূর্ণ সন্তোষজনক সমাধান নয়। আমি কমান্ড লাইন থেকে ক্রোন জব চালাতে সক্ষম হতে চাই যেন ক্রোন এটি চালাচ্ছে (একই ব্যবহারকারী, একই পরিবেশের ভেরিয়েবল ইত্যাদি)। এই কাজ করতে একটি উপায় আছে কি? স্ক্রিপ্ট পরিবর্তনগুলি পরীক্ষা করতে 60 সেকেন্ড অপেক্ষা করা ব্যবহারিক নয়।


(দুঃখিত মন্তব্য যোগ করতে পারবেন না) 0 30 16 20 *? * আপনি যদি চাকরিটি এভাবে চালান তবে পুরো ধারণাটি স্ক্রিপ্ট আউটপুট সরবরাহ করা হবে তা দেখার জন্য যে কাজটি কোনও লগতে না লিখলে ভুল হয় না, এটি নিরর্থক

উত্তর:


80

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


পদক্ষেপ 1 : আমি এই লাইনটি অস্থায়ীভাবে ব্যবহারকারীর ক্রন্টবায় রেখেছি:

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

তারপরে ফাইলটি লেখা হয়ে গেলে এটি বের করে ফেলল।

পদক্ষেপ 2 : নিজেকে সামান্য চালানো-হিসাবে ক্রোন বাশ লিপিটি তৈরি করুন:

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

সুতরাং, প্রশ্নে ব্যবহারকারী হিসাবে, আমি সক্ষম ছিল

run-as-cron /the/problematic/script --with arguments --and parameters

এই সমাধানটি সুদ বা আরও নমনীয়তার জন্য ব্যবহার করার জন্য স্পষ্টত বাড়ানো যেতে পারে।

আশা করি এটি অন্যকে সহায়তা করবে।


8
এটি আমার পক্ষে কাজ করে না এবং আমি অবাক করেছিলাম যে এটি যদি কারও পক্ষে উন্নীত হয় তবে তা করে। 1) আপনি বাশ ব্যবহার করছেন কেন? এটি এখানে প্রয়োজন হয় না এবং এটি এর মধ্যে নাও থাকতে পারে /usr/bin। 2) cat …/cron-envআউটপুট একাধিক লাইন, যা কাজ করে না। /usr/bin/env -i $(cat cron-env) echo $PATHটার্মিনালটিতে কেবল চালনার চেষ্টা করুন , এটি পরিবেশটিকে আক্ষরিক ব্যবহারের পরিবর্তে আউটপুট করে। 3) বর্তমান পরিবেশ অনুকরণীয় ক্রোন পরিবেশের মধ্যে ফাঁস হয়। চেষ্টা করুন: export foo=leaked; run-as-cron echo $foo
মার্কো

@ মার্কো বাশে কাজ করে, যা আমি ব্যবহার করি কারণ এটি sh এর চেয়ে আরও ভাল সংজ্ঞাযুক্ত পরিবেশ। আমি pdksh, ksh (একাধিক সংস্করণ), ব্যাশ এবং ড্যাশ থেকে সমস্ত কিছুই ব্যবহার করি তাই ভাষার সাধারণ উপসাগরটিতে খুব কঠোরভাবে থাকা সত্ত্বেও আমি "শুদ্ধ" এর প্রয়োগের মধ্যে পার্থক্য সম্পর্কে খুব সচেতন। :-)
ম্যাক্স মারফি

7
@ মার্কো ২. catএকাধিক লাইন তৈরি করে, যা কাজ করে, কারণ শেল প্রতিস্থাপন তাদের একক লাইনে ভেঙে দেয়, যার সাহায্যে আপনি পরীক্ষা করতে পারেন echo $(cat cron-env ) | wc; আপনার উদাহরণ কমান্ড, কলিং শেল থেকে /usr/bin/env -i $(cat cron-env) echo $PATHবিকল্প $PATH; পরিবর্তে, এটি সাব-ভাইরোনমেন্টে বিকল্প হিসাবে একটি সাবস্কেল প্রার্থনা করা উচিত, যেমন /usr/bin/env -i $(cat cron-env) /bin/sh -c 'echo $PATH'। ৩. আপনি একই ভুলটি করেছেন, আবার সাব
জন ফ্রিম্যান

41

আমি পিস্তোসের উত্তরের ভিত্তিতে একটি সমাধান উপস্থাপন করি তবে ত্রুটিগুলি ছাড়াই।

  • ক্রন্টবটিতে নিম্নলিখিত লাইনটি যুক্ত করুন, যেমন ব্যবহার করে crontab -e

    * * * * *  /usr/bin/env > /home/username/cron-env
    
  • একটি শেল স্ক্রিপ্ট তৈরি করুন যা ক্রোন জবস চালিত একই পরিবেশে একটি কমান্ড কার্যকর করে:

    #!/bin/sh
    
    . "$1"
    exec /usr/bin/env -i "$SHELL" -c ". $1; $2"
    

ব্যবহার করুন:

run-as-cron <cron-environment> <command>

যেমন

run-as-cron /home/username/cron-env 'echo $PATH'

নোট করুন যে দ্বিতীয় আর্গুমেন্টের যদি একটি আর্গুমেন্টের প্রয়োজন হয় তা উদ্ধৃত করা দরকার। স্ক্রিপ্টের প্রথম লাইন দোভাষী হিসাবে একটি পসিক্স শেল লোড করে। দ্বিতীয় লাইনটি ক্রোন এনভায়রনমেন্ট ফাইলটি উত্স করে। এটি সঠিক শেলটি লোড করার জন্য প্রয়োজন, যা পরিবেশে পরিবর্তনশীল SHELL। তারপরে এটি একটি খালি পরিবেশ লোড করে (নতুন শেলের মধ্যে পরিবেশের ভেরিয়েবলগুলি ফাঁস রোধ করতে), একই শেলটি চালু করে যা ক্রোনজবসের জন্য ব্যবহৃত হয় এবং ক্রোন পরিবেশের ভেরিয়েবলগুলি লোড করে। অবশেষে কমান্ড কার্যকর করা হয়।


এটি আমার রুবি সম্পর্কিত স্পিংস লোডিংয়ের ত্রুটির পুনরুত্পাদন করতে আমাকে সহায়তা করেছিল।
cweiske

1
ক্রোন-এনভিভি ফাইলটি লেখার জন্য আমি @ রিবুট ক্রোন বিকল্পটি ব্যবহার করেছি। তারপরে আপনি এটিকে ক্রন্টবায় রেখে দিতে পারেন এবং সিস্টেমটি শুরু করা হলে এটি পুনরায় লেখা হবে। আপনাকে লাইন যোগ / অপসারণ করতে হবে না বিধায় এটি কিছুটা সহজ করে তোলে।
মাইকেল বার্টন 12

হ্যাঁ, পিস্তোস সলিউশনটি আমার পক্ষে কার্যকর হয়নি তবে এটি হয়েছিল
স্ট্যাক

19

ক্রোনট্যাব যেমন কাজটি না করে, আপনি এটির বিষয়বস্তুটি পরিচালনা করতে পারবেন:

crontab -l | grep -v '^#' | cut -f 6- -d ' ' | while read CMD; do eval $CMD; done

এর মানে কি :

  • crontab কাজ তালিকা
  • মন্তব্য লাইন সরান
  • crontab কনফিগারেশন অপসারণ
  • তারপরে একে একে চালু করুন

5
ক্রোন যে একই পরিবেশে এটি অগত্যা তা করবে না, এবং আমি ভেবেছিলাম যে সে কেবল একটিতে পরীক্ষা করতে চায়।
ফ্যালকন Momot

2
ঠিক আছে, আমার ভুল হয়েছে ... এটি কেবল কাজ চালায় তবে ক্রোন যেমন করে না!
জাজানো জানি

5
এখনও একটি দুর্দান্ত সমাধান +1
এরিক উলডাল

1
আপনি কেবলমাত্র sudo -H -u otheruser bash -c 'crontab..." অন্য কোনও ব্যবহারকারী
বিটিডব্লিউর ক্রন্টব

5

আমি দেখেছি বেশিরভাগ ডিফল্ট ক্রোন ডিমেন দিয়ে ডিফল্টরূপে, ঠিক এখনই এখানে ক্রোনকে চালানোর জন্য বলার উপায় নেই। আপনি যদি অ্যানাক্রোন ব্যবহার করছেন তবে আমি সম্ভবত অগ্রণীতে একটি পৃথক দৃষ্টান্ত চালানোর কথা ভাবছি।

যদি আপনার স্ক্রিপ্টগুলি সঠিকভাবে চলমান না থাকে তবে আপনি তা বিবেচনায় নিচ্ছেন না

  • স্ক্রিপ্টটি একটি নির্দিষ্ট ব্যবহারকারী হিসাবে চলমান
  • ক্রোনের একটি সীমিত পরিবেশ রয়েছে (এর সর্বাধিক প্রকট প্রকাশটি একটি পৃথক পথ)।

ক্রোনটব থেকে (5):

ক্রোন (8) ডেমন দ্বারা কয়েকটি পরিবেশের ভেরিয়েবল স্বয়ংক্রিয়ভাবে সেট আপ হয়। SHELL / bin / sh এ সেট করা আছে, এবং ক্রোটাবের মালিকের / ইত্যাদি / পাসডাব্লু লাইন থেকে LOGNAME এবং হোম সেট করা আছে। PATH "/ usr / bin: / bin" তে সেট করা আছে। হোম, শেল এবং পাথ ক্রন্টবায় সেটিংসের দ্বারা ওভাররাইড হতে পারে; LOGNAME হ'ল ব্যবহারকারী যে কাজটি চালাচ্ছেন, এবং সম্ভবত এটি পরিবর্তন করা যাবে না।

সাধারণভাবে PATH হ'ল বৃহত্তম সমস্যা, সুতরাং আপনার প্রয়োজন:

  • স্ক্রিপ্টের মধ্যে পরিষ্কারভাবে PATH সেট করুন, পরীক্ষার সময় / usr / bin: / bin এ। আপনি এক্সপোর্ট PATH = "/ usr / বিন: / বিন" দিয়ে ব্যাশে এটি করতে পারেন
  • ক্রোনট্যাবের শীর্ষে আপনি যে যথাযথ PATH চান তা স্পষ্টভাবে সেট করুন। যেমন প্যাথ = "/ ইউএসআর / বিন: / বিন: / ইউএসআর / স্থানীয় / বিন: / ইউএসআর / এসবিন: / এসবিন"

যদি আপনাকে শেল ছাড়াই অন্য ব্যবহারকারী হিসাবে স্ক্রিপ্টটি চালানোর প্রয়োজন হয় (যেমন www-ডেটা), sudo ব্যবহার করুন:

sudo -u www-data /path/to/crontab-script.sh

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


সম্পূর্ণ প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ। আমি নির্দিষ্ট ব্যবহারকারী হিসাবে চলার দুটি বিষয় এবং একটি নির্দিষ্ট পরিবেশ নিয়ে সচেতন। এই হিসাবে, আমি আমার নিজের উত্তর তৈরি করেছি, যা আমি এখন পোস্ট করব ...
পিসটোস

পালানো অক্ষরগুলি চাকরি না চালানোর একটি বৈধ কারণ
জো ফিলিপস

2

মার্কোর স্ক্রিপ্টটি কোনও কারণে আমার পক্ষে কার্যকর হয়নি। আমার ডিবাগ করার সময় নেই, তাই আমি পাইথন স্ক্রিপ্ট লিখেছিলাম যা একই জিনিসটি করে। এটি দীর্ঘতর, তবে: প্রথমত, এটি আমার পক্ষে কাজ করে এবং দ্বিতীয়ত, আমি এটি বোঝা সহজ করি। আপনি যেখানে আপনার পরিবেশ সংরক্ষণ করেছেন সেখানে "/ tmp / cron-env" পরিবর্তন করুন। এটা এখানে:

#!/usr/bin/env python
from __future__ import division, print_function

import sys
import os

def main():
    if len(sys.argv) != 2 or sys.argv[1] in ('-h', '--help'):
        print("Usage: {} CMD\n"
              "Run a command as cron would. Note that CMD must be quoted to be only one argument."
              .format(sys.argv[0]))
        sys.exit(1)
    _me, cmd = sys.argv
    env = dict(line.strip().split('=', 1) for line in open('/tmp/cron-env'))
    sh = env['SHELL']
    os.execvpe(sh, [sh, '-c', cmd], env)

if __name__ == '__main__':
    main()

1

ঠিক আছে, ব্যবহারকারী যেমন আপনি ক্রন্টব এন্ট্রিতে রেখেছিলেন (বা যার ক্রন্টাব আপনি এটিতে রেখেছেন, পর্যায়ক্রমে) তার সমান, সুতরাং এটি কোনও মস্তিষ্কে নেই। crontab(5) আপনাকে পরিবেশের ভেরিয়েবল সেটগুলির তালিকা দেওয়া উচিত, সেখানে কয়েকটি মাত্র রয়েছে।


অন্য কথায়, আপনি বলছেন এটি করার কোনও উপায় নেই? কেবলমাত্র "যথেষ্ট পরিমাণে" কাজের চাপ?
পিস্তোস

না, আমি বলছি যে আমার উত্তরে প্রদত্ত তথ্য ব্যবহার করে আপনি এটি করতে পারবেন।
দোলা

1

উদাহরণস্বরূপ, vixie-cron এর মতো বেশিরভাগ ক্রোনট্যাবগুলিতে আপনি ক্রন্টব এ নিজেই ভেরিয়েবল স্থাপন করতে পারেন এবং তারপরে / usr / bin / env ব্যবহার করে এটি কাজ করে কিনা তা পরীক্ষা করতে পারেন। রান-অ-ক্রোন স্ক্রিপ্টটির মধ্যে কী কী ভুল তা আপনি একবার জানতে পেরে ক্রোনটবে আপনার স্ক্রিপ্টটি কাজ করতে পারবেন।

SHELL=/bin/bash
LANG=en
FASEL=BLA

* * * * *   /usr/bin/env > /home/username/cron-env

1

মার্কোর সমাধানটি আমার পক্ষে কার্যকর হয়নি তবে নোমের অজগর স্ক্রিপ্টটি কাজ করেছিল। এখানে মার্কোর স্ক্রিপ্টে সামান্য পরিবর্তন হয়েছে যা এটি আমার পক্ষে কাজ করেছে:

#!/bin/sh
. "$1"
exec /usr/bin/env -i "$SHELL" -c "set -a;. $1; $2"

যুক্ত set -aরফতানি ভেরিয়েবলগুলি স্ক্রিপ্ট $ 1 এ সংজ্ঞায়িত করা হয়েছে এবং এটি command 2 কমান্ডে উপলব্ধ করেছে

পিএস নোমের অজগরটি কাজ করেছিল কারণ এটি শিশু প্রক্রিয়াতে পরিবেশ 'রফতানি' করে।


1

যদি এটি কোনও শেল স্ক্রিপ্ট হয় তবে এটি আপনাকে বেশিরভাগ ক্ষেত্রে পাওয়া উচিত:

sudo su  # (assuming it's run as root, if not switch to the user you want it to run as)
cd  # Switch to home folder
sh <full-path/my-shell-script>

এটি অবশ্যই কিছু সমস্যা হাইলাইট করবে, সবকিছু না হলে।


0

আমি ম্যানুয়ালি ক্রোন জব চালানোর কোনও উপায় খুঁজে পাইনি তবে এই লেখার মাধ্যমে ক্রোনজব্বের মতো একই পরিবেশ নির্ধারণ এবং স্ক্রিপ্টটি ম্যানুয়ালি চালানো পরামর্শ দেয়।


ওপি কীভাবে করতে চায় তা করতে আপনি যা পরামর্শ দেওয়ার পরামর্শ দিচ্ছেন না?
দোলা

কোন কারণে আমি লেখার লিঙ্কটি অন্তর্ভুক্ত করেছি যাতে এটি কীভাবে করা যায় তা বর্ণনা করে। আমি এখানে সবকিছু কপি-পেস্ট করা প্রয়োজন মনে করি না।
oneodd1

0

আপনি পরের মিনিট শুরু করতে কাজের প্রোগ্রাম করতে পারেন :)


7
59 সেকেন্ড সময় অনেক সময়।
স্টাফেন ব্রুকার্ট

ওপি প্রশ্নের এই সম্ভাবনার কথা উল্লেখ করেছে: "এটি করার কোনও উপায় আছে কি? স্ক্রিপ্ট পরিবর্তনগুলি পরীক্ষা করতে 60০ সেকেন্ড অপেক্ষা করা व्यावहारিক নয়।"
অ্যান্ড্রু গ্রিম

59 সেকেন্ড সম্ভবত অন্য প্রস্তাবিত (এবং কাজের গ্যারান্টিযুক্ত নয়) সমাধানগুলির যে কোনওটিকে বেছে নিতে এবং প্রয়োগ করতে লাগে তার চেয়ে কম। আমি যখন এইরকম ঘাটতিগুলি দেখি তখন আমি অবাক হয়ে যাই যে লিনাক্স কীভাবে এমন একটি ডি-ফ্যাক্টো স্ট্যান্ডার্ড সার্ভার ওএসে পরিণত হয়েছিল। কোনও গুরুতর সিসাদমিন কি তাদের চাকরি পরীক্ষা করতে চান না?
রলফ

0

আমি মার্কোর উত্তরে নুডলড করেছিলাম। কোডটি নীচে দেখানো হয়েছে, তবে আমি এখানে এই স্ক্রিপ্টটি বজায় রাখব ।

এই ক্রন্টব দেওয়া:

# m h  dom mon dow   command

X=Y
1 2 3 4 5 6 echo "Hello, world"
1 2 3 4 5 6 echo "Goodby, cruel world"
1 2 3 4 5 6 echo "Please spare me the drama"

নমুনা ব্যবহার সেশন:

$ cronTest
This is the crontab for  without comment lines or blank lines:
     1  X=Y
     2  echo "Hello, world"
     3  echo "Goodby, cruel world"
     4  echo "Please spare me the drama"
Which line would you like to run as  now?
55
55 is not valid, please enter an integer from 1 to 4
2

Evaluating 1: X=Y

Evaluating 2: echo "Hello, world"
Hello, world

এটি cronTest2, যা পরিবেশ ক্রিয়েবলগুলি ঠিক একইভাবে সেট করার জন্য অনুরোধ করা দরকার ক্রোন যেমন:

#!/bin/bash

# Prompt user for a user crontab entry to execute

function deleteTempFile {
  rm -f $TEMP_FILE
}

function debug {
  if [ "$DEBUG" ]; then >&2 printf "$1\n"; fi
}

function isValidLineNumber {
  # $1 - number of lines
  # $2 - requested line number
  if [[ -n "${2//[0-9]+/}" ]] && (( $2 <= $1 )); then echo true; else echo false; fi
}

function isVariableAssignment {
  [[ "$( echo "$1" | grep "=" )" ]]
}

function makeTempCrontab {
  local -r ASTERISK=\\*
  local -r NUMBER='[[:digit:]]{1,2}'
  local -r NUMBERS="$NUMBER(,$NUMBER)+"
  local -r CRON="^(($ASTERISK|$NUMBER|$NUMBERS)[[:space:]]+)"
  local -r CRON5_REGEX="$CRON{5}"
  local -r CRON6_REGEX="$CRON{6}"

  rm -f "$TEMP_FILE"

  local -r ALL_LINES="$( crontab -l )"

  # Ignore empty lines and lines starting with # (comment lines)
  local -r LINES="$( 
    echo "$ALL_LINES" | \
    grep -v '^[[:space:]]*#' | \
    grep -v '^[[:space:]]*$'
  )"

  if [[ -z "$LINES" ]]; then
    echo "Your crontab is empty, nothing to do"
    exit 1
  fi

  IFS=$'\n' 
  for LINE in $LINES; do
    LINE="$( echo "$LINE" | sed 's/\s\+$//e' )" # remove trailing space
    if [ "$( echo "$LINE" | grep "^$" )" ]; then  
      debug ""  # ignore empty line
    elif [ "$( echo "$LINE" | egrep "$CRON6_REGEX" )" ]; then
      debug "6 field date/time specifier: $LINE"
      # strip out when to run debug, leaving just the command to execute
      echo "$LINE" | cut -f 7- -d ' ' >> "$TEMP_FILE"
    elif [ "$( echo "$LINE" | egrep "$CRON5_REGEX" )" ]; then
      debug "5 field date/time specifier: $LINE"
      # strip out when to run debug, leaving just the command to execute
      echo "$LINE" | cut -f 6- -d ' ' >> "$TEMP_FILE"
    elif [ "$( echo "$LINE" | grep '^@' )" ]; then
      debug "@declaration: $LINE"
      # strip out @declaration, leaving just the command to execute
      echo "$LINE" | cut -f 2- -d ' ' >> "$TEMP_FILE"
    elif [ "$( echo "$LINE" | grep '=' )" ]; then
      debug "Variable assignment: $LINE"
      echo "$LINE"  >> "$TEMP_FILE"
    else
      debug "Ignored: $LINE"
    fi
  done
  unset IFS
}

function runUpToLine {
  # Scans up to given line number in $TEMP_FILE
  # Evaluates variable assignment
  # Executes specified line
  # Ignores remainder of file
  # Function definitions are not supported
  #
  # $1 - line number to run

  readarray CONTENTS < "$TEMP_FILE"
  for (( i=0; i<=$1; i++ )); do
    # >&2 echo "\$i=$i, \$1=$1, isVariableAssignment: $( isVariableAssignment $CONTENTS[$i] ), CONTENTS[$i]=${CONTENTS[$i]}"
    if isVariableAssignment ${CONTENTS[$i]} || (( $i == $1 )); then
      printf "\nEvaluating $(( i+1 )): ${CONTENTS[$i]}"
      eval "${CONTENTS[$i]}"
    fi
  done
}

function selectLine {
  >&2 echo "This is the crontab for $USER without comment lines or blank lines:"
  cat -n "$TEMP_FILE" >&2
  >&2 echo "Which line would you like to run as $USER now?"

  local -r NUM_LINES=$( cat "$TEMP_FILE" | wc -l )
  read LINE_NUMBER
  # >&2 echo "NUM_LINES=$NUM_LINES, LINE_NUMBER=$LINE_NUMBER;  valid: $( isValidLineNumber $NUM_LINES $LINE_NUMBER )"
  while [[ $( isValidLineNumber $NUM_LINES $LINE_NUMBER ) == false ]]; do
    >&2 echo "$LINE_NUMBER is not valid, please enter an integer from 1 to $NUM_LINES"
    read LINE_NUMBER
    # >&2 echo "NUM_LINES=$NUM_LINES, LINE_NUMBER=$LINE_NUMBER;  valid: $( isValidLineNumber $NUM_LINES $LINE_NUMBER )"
  done
  (( LINE_NUMBER-- ))
  echo ${LINE_NUMBER}
}

function doIt {
  export USER=$1
  local -r TEMP_FILE="$( mktemp crontabTest.XXX )"
  trap deleteTempFile EXIT

  makeTempCrontab
  local -r LINE_NUMBER="$( selectLine )"
  runUpToLine $LINE_NUMBER
}

doIt "$1" 

cronTestcronTest2সঠিক পরিবেশের ভেরিয়েবল সেট সহ সঞ্চালিত হয়:

#!/bin/bash

# Execute a user crontab entry with the proper environment

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

env -i bash --noprofile --norc -c "$DIR/cronTest2 $USER"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.