আপনি কীভাবে উইন্ডোজে সাইগউইনে ক্রন্টব চালাবেন?


98

কিছু সাইগউইন কমান্ড .exeফাইল হয়, সুতরাং আপনি এগুলি স্ট্যান্ডার্ড উইন্ডোজ শিডিয়ুলার দিয়ে চালাতে পারেন, তবে অন্যদের .exeএক্সটেনশন নেই তাই ডস থেকে চালানো যাবে না (এটি মনে হচ্ছে)।

উদাহরণস্বরূপ আমি updatedbরাত্রে চালাতে চাই ।

আমি ক্রোন কাজ কিভাবে করব?

উত্তর:


91

আপনাকে ইনস্টল cygrunsrvকরতে হবে যাতে আপনি উইন্ডোজ পরিষেবা হিসাবে ক্রোন সেট করতে পারেন, তারপরে চালনা করুন cron-config

আপনি যদি ক্রোন জবগুলি যে কোনও আউটপুটটির ইমেল প্রেরণ করতে চান তবে আপনাকেও ইনস্টল করতে হবে eximঅথবা ssmtp(চালানোর আগে cron-config) need

দেখুন /usr/share/doc/Cygwin/cron-*.READMEআরো বিস্তারিত জানার জন্য।

কোনও .exeএক্সটেনশন ছাড়াই প্রোগ্রামগুলি সম্পর্কিত , এগুলি সম্ভবত কোনও ধরণের শেল স্ক্রিপ্ট। আপনি যদি ফাইলটির প্রথম লাইনটি দেখেন তবে এগুলি চালানোর জন্য আপনাকে কী প্রোগ্রামটি ব্যবহার করতে হবে তা দেখতে পেলেন (উদাহরণস্বরূপ, " #!/bin/sh"), যাতে আপনি উইন্ডোজ শিডিউলার থেকে শেল প্রোগ্রামটি কল করে (যেমন, " C:\cygwin\bin\sh.exe -l /my/cygwin/path/to/prog" সম্ভবত তাদের সম্পাদন করতে পারেন) । )


4
মনে রাখবেন যে আপনি অন্য অ্যাকাউন্টগুলি না ব্যবহার করতে বললেও এটি এখনও সিটুইড (বা কিছু) ব্যবহার করবে এবং can't switch user contextস্পষ্টত অনুরোধটি অন্যান্য অ্যাকাউন্টগুলি ব্যবহার না করার জন্য করা হলেও স্ফটিক এবং বিপরীতে ব্যর্থ হবে। সাইগউইনে ক্রোন দিয়ে অ্যাকাউন্ট স্যুইচিং স্পষ্টতই MANDATORY। নিজের মতো করে চালানোর জন্য আপনাকে অবশ্যই অবশ্যই বলবেন না ...
ব্যবহারকার 3338098

এবং সাইগউইনের ক্রোন -n বিকল্পটি উইন্ডোজ ইভেন্ট লগতে যা ঘটেছে তা বিবেচনা করেই সমান অর্থহীন। সাইগউইন / ক্রোন এর অংশে ভয়ানক এবং প্রতারক ডকুমেন্টেশন।
ব্যবহারকারী 3338098

4
টিপ: croneventsইভেন্টগুলি দেখতে উইন্ডোটি ব্যবহার করুন (উইন্ডোজ ইভেনস লগ থেকে)। এগুলি কখনই ফেলে দেওয়া হয় না, আমি প্রতি কয়েকমাস লগগুলি ছাঁটাই করব।
জিন পাভলোভস্কি


71

আপনার দুটি বিকল্প রয়েছে:

  1. সাইগ্রুনস্রভ ব্যবহার করে ক্রোনকে উইন্ডোজ পরিষেবা হিসাবে ইনস্টল করুন:

    cygrunsrv -I cron -p /usr/sbin/cron -a -n
    
    net start cron
    

    দ্রষ্টব্য, ক্রনের (খুব) পুরানো সংস্করণগুলিতে আপনাকে -n এর পরিবর্তে -D ব্যবহার করতে হবে

  2. 'নন। এক্সেক্স' ফাইলগুলি সম্ভবত বাশ স্ক্রিপ্টস, সুতরাং আপনি এগুলি স্ক্রিপ্টটি চালানোর জন্য বাশকে অনুরোধ করে উইন্ডোজ শিডিউলারের মাধ্যমে চালাতে পারেন, যেমন:

    C:\cygwin\bin\bash.exe -l -c "./full-path/to/script.sh"
    

4
আমি বিশেষত bash.exe পদ্ধতিটি পছন্দ করেছি। ধন্যবাদ
ব্যারিপিকার

4
বিটিডাব্লু, আমাকে পাথটি ইউনিক্স-স্টাইলের পথ হিসাবে নির্দিষ্ট করতে হবে - আপডেটডিবের জন্য আমার সম্পূর্ণ কমান্ডটি উইন্ডো টাস্ক শিডিয়ুলারের সাথে নির্ধারিত ছিল ... সি: \ সাইগউইন \ বিন \ বশ.এক্সে-এল-সি "/ ইউএসআর / বিন /
আপডেটডিব

4
আমি অবশ্যই এই উত্তরে পদ্ধতিটি সুপারিশ করছি। আমি সি: g সাইগউইন \ বিন \ bash.exe -l -c উইন্ডোজ
on-

4
যদি এটি কাজ না করে তবে আপনি -D দ্বারা -D প্রতিস্থাপন করতে চাইতে পারেন: সাইগ্রানস্রভ -আই ক্রোন-পি / ইউএসআর / এসবিন / ক্রোন -a -ডি
বেনলিটজ

4
আমি cygrunsrv v1.62 ব্যবহার করছি এবং '-D' একটি বৈধ বিকল্প নয়, সুতরাং পরিষেবাটি শুরু হওয়ার পরে অবিলম্বে প্রস্থান করে। নিজে থেকে পরিষেবাটি বেরিয়ে আসতে আটকাতে '-n' এর পরিবর্তে '-n' ব্যবহার করা উচিত।
ইয়াকিন

24

টুপি টিপ http://linux.subogero.com/894/cron-on-cygwin/

সাইগউইন-সেটআপ শুরু করুন এবং "অ্যাডমিন" বিভাগ থেকে "ক্রোন" প্যাকেজ যুক্ত করুন।

আমরা ব্যবহারকারী সিস্টেম দ্বারা পরিষেবা হিসাবে ক্রোন চালাব। দরিদ্র সিস্টেমের জন্য একটি হোম ডিরেক্টরি এবং শেল দরকার। "/ Etc / passwd" ফাইলটি তাদের সংজ্ঞায়িত করবে।

$ mkdir /root
$ chown SYSTEM:root /root
$ mcedit /etc/passwd
SYSTEM:*:......:/root:/bin/bash

পরিষেবাটি শুরু করুন:

$ cron-config
Do you want to remove or reinstall it (yes/no) yes
Do you want to install the cron daemon as a service? (yes/no) yes
Enter the value of CYGWIN for the daemon: [ ] ntsec
Do you want the cron daemon to run as yourself? (yes/no) no
Do you want to start the cron daemon as a service now? (yes/no) yes

স্থানীয় ব্যবহারকারীরা এখন তাদের নির্ধারিত কাজগুলি এর মতো সংজ্ঞায়িত করতে পারেন (ক্রোনটাব আপনার প্রিয় সম্পাদক শুরু করবে):

$ crontab -e  # edit your user specific cron-table HOME=/home/foo
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
# testing - one per line
* * * * *   touch ~/cron
@reboot     ~/foo.sh
45 11 * * * ~/lunch_message_to_mates.sh

ডোমেন ব্যবহারকারী : এটি কার্যকর হয় না। দরিদ্র ক্রোন মেশিনে ডোমেন ব্যবহারকারীদের পক্ষে তফসিলযুক্ত কাজগুলি চালাতে অক্ষম। তবে অন্য একটি উপায় রয়েছে: ক্রোন সিস্টেম স্তরের ক্রোন টেবিলের মধ্যে পাওয়া যায় এমন জিনিসগুলিকে "/ etc / crontab" এ চালায়। সুতরাং সেখানে আপনার দুর্ভোগ inোকান, যাতে সিস্টেমে এটি নিজের পক্ষ থেকে করে:

$ touch /etc/crontab
$ chown SYSTEM /etc/crontab
$ mcedit /etc/crontab
HOME=/root
PATH=/usr/local/bin:/usr/bin:/bin:$PATH
* * * * *   SYSTEM touch ~/cron
@reboot     SYSTEM rm -f /tmp/.ssh*

অবশেষে crontab এন্ট্রি সম্পর্কে কয়েকটি শব্দ। এগুলি হয় পরিবেশ সেটিংস বা নির্ধারিত কমান্ড। উপরে যেমনটি দেখা গেছে, সাইগউইনে একটি ব্যবহারযোগ্য PATH তৈরি করা ভাল। হোম দির এবং শেল সাধারণত "/ etc / passwd" থেকে নেওয়া হয়।

নির্ধারিত কমান্ডের কলামগুলিতে ম্যানুয়াল পৃষ্ঠাটি দেখুন।

নির্দিষ্ট ক্রন্টব এন্ট্রি যদি না চালায় তবে সবচেয়ে ভাল ডায়াগনস্টিক টুল হ'ল:

$ cronevents

4
CYGWIN কে এনটিসিতে সেট করার কোনও কারণ নেই। এটি অচল। cygwin.com/cygwin-ug-net/using-cygwinenv.html
yam655

আপনি কীভাবে সিগউইনকে সিস্টেম হিসাবে চালাবেন?
নিকেন

যদিও আমরা বিজ্ঞাপন প্রমাণীকরণের সাথে সাইগউইন এসএসডিডি ব্যবহার করি, তবুও আমি ক্রোন একইভাবে বা পাসডব্লুড-আর দিয়ে কাজ করতে পারিনি। এটি আমার জন্য কাজ করার একমাত্র উপায় ছিল একটি মনোনীত ব্যবহারকারীর জন্য পরিষেবা হিসাবে ক্রোন চালানো এবং এই ব্যবহারকারীর সাথে সমস্ত ক্রোন কাজ করা। (সাইগউইন ২.৮.০)
মর্টেনবি

7

কেবল যোগ করতে চেয়েছিলেন যে ক্রোন করার বিকল্পগুলি পরিবর্তিত হয়েছে বলে মনে হচ্ছে। -D এর পরিবর্তে পাস করা দরকার।

cygrunsrv -I cron -p /usr/sbin/cron -a -n

3

এই উত্তর থেকে নির্দেশাবলী প্রয়োগ করেছেন এবং এটি উত্তরটির মতো আরও একটি অনুলিপি পেস্ট চিহ্নিত করার জন্য কাজ করেছে (কারণ সাইগউইন ইনস্টলেশন প্রক্রিয়াটি এন্টি-অনুলিপি-পেস্টের মতো
প্রকারের প্রয়োগ করা হয়েছে) উইনলোগো বোতামে ক্লিক করুন, cmd.exe টাইপ করুন, ডান ক্লিক করুন, চয়ন করুন " প্রশাসক হিসাবে শুরু করুন "। ইন cmd প্রম্পট:

 cd <directory_where_i_forgot_the setup-x86_64.exe> cygwin installer:
 set package_name=cygrunsrv cron
 setup-x86_64.exe -n -q -s http://cygwin.mirror.constant.com -P %package_name%

নিশ্চিত করুন যে ইনস্টলারটি প্রম্পটে কোনও ত্রুটি ছুঁড়ে না ফেলে ... যদি এটি থাকে - আপনার সম্ভবত সম্ভবত কিছু সাইগউইন বাইনারি রয়েছে বা আপনি উইন্ডোজ প্রশাসক নন, বা কিছু অদ্ভুত বাগ ...

এখন cmd কমান্ড promt:

 C:\cygwin64\bin\cygrunsrv.exe -I cron -p /usr/sbin/cron -a -D   

অথবা আপনার সাইগ্র্রনসরভ.এক্স.ই. এর কাছে পুরো ফাইল পাথ থাকতে হবে এবং সেন্ট্রাল সিএমডি প্রম্পটে উইন্ডো পরিষেবা হিসাবে ক্রোনটি শুরু করুন

 net start cron

এখন বাশ টার্মিনালে ক্রন্টব চালান

আপনি ক্রোন এন্ট্রি একটি উদাহরণ নমুনা সেট আপ:

        #sync my gdrive each 10th minute
    */10 * * * * /home/Yordan/sync_gdrive.sh

    # * * * * * command to be executed
    # - - - - -
    # | | | | |
    # | | | | +- - - - day of week (0 - 6) (Sunday=0)
    # | | | +- - - - - month (1 - 12)
    # | | +- - - - - - day of month (1 - 31)
    # | +- - - - - - - hour (0 - 23)
    # +--------------- minute

সেট প্যাকেজ_নাম = সাইগ্রানস্রভ ক্রোন কাজ করেনি আমি সেগুলি আলাদাভাবে ইনস্টল করতে হয়েছিল। রাখা পেয়ে: "cygrunsrv প্রদত্ত পথ একটি বৈধ এক্সিকিউটেবল নির্দেশ না"
ডাকাতি

পরিষেবা শুরু হবে না তবে /var/log/cron.log-এ সন্ধান করলে দেখা গেল যে -D হওয়া উচিত। "C: \ cygwin64 \ bin \ cygrunsrv.exe -R ক্রোন" চালনা এবং তারপরে "c: g cygwin64 \ bin \ cygrunsrv.exe -I cron -p / usr / sbin / cron -a -n" এটি ঠিক করে দিয়েছে।
rob

4
cygrunsrv: কোনও পরিষেবা ইনস্টল করার সময় ত্রুটি: ওপেনসিসি ম্যানেজার: উইন 32 ত্রুটি 5: অ্যাক্সেস অস্বীকার করা হয়েছে।
নিকেন

3

আমি উইন্ডোজ 7. এ লগ ইন করার পরে কীভাবে সাইগউইন ক্রোন পরিষেবাদি স্বয়ংক্রিয়ভাবে চালিত হবে তা ভেবেছিলাম me

নোটপ্যাড ব্যবহার করে, প্রথম লাইনে এবং দ্বিতীয় লাইনে (উদ্ধৃতি ব্যতীত) C:\cygwin\bin\Cygwin_launch_crontab_service_input.txtসামগ্রী দিয়ে ফাইল তৈরি করুন । এগুলির জন্য অনুরোধ জানাতে আপনার দুটি প্রতিক্রিয়া ।noyescron-config

C:\cygwin\Cygwin_launch_crontab_service.batসামগ্রী সহ ফাইল তৈরি করুন :

@echo off
C:
chdir C:\cygwin\bin
bash  cron-config < Cygwin_launch_crontab_service_input.txt

উইন্ডোজ স্টার্টআপ ফোল্ডারে নিম্নলিখিতটিতে একটি শর্টকাট যুক্ত করুন: Cygwin_launch_crontab_service.bat

দেখুন http://www.sevenforums.com/tutorials/1401-startup-programs-change.html কেমন প্রারম্ভ জুড়তে উপর সাহায্যের প্রয়োজন হয় তাহলে। বিটিডাব্লু, আপনি চাইলে স্টার্টআপে এগুলি বিকল্পভাবে যুক্ত করতে পারেন:

সাইগউইন

এক্সউইন সার্ভার

প্রথমটি মৃত্যুদণ্ড কার্যকর করে

C:\cygwin\Cygwin.bat

এবং দ্বিতীয়টি কার্যকর করে

C:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe

1

উইন্ডোজ পরিষেবা হিসাবে সাইগউইনে ক্রোন ইনস্টল করার সঠিক বাক্য গঠনটি আর্গুমেন্ট হিসাবে নন- ডি পাস করতে হবে - ডি না :

cygrunsrv - ইনস্টল ক্রোন --পথ / usr / sbin / ক্রোন --args -n

-ডি সাইগউইনে ক্রোন শুরু করার সময় ব্যবহারের ত্রুটিপ্রদান করে:

$

$ সাইগ্রানস্রভ - ইনস্টল ক্রোন --পাথ / ইউএসআর / এসবিিন / ক্রোন --আরগ

$ cygrunsrv - স্টার্ট ক্রোন

cygrunsrv: কোনও পরিষেবা শুরু করার সময় ত্রুটি: ক্যোয়ারী সার্ভিস স্ট্যাটাস: উইন 32 ত্রুটি 1062:

পরিষেবাটি শুরু করা হয়নি।

$ বিড়াল /var/log/cron.log

ক্রোন: অজানা বিকল্প - ডি

ব্যবহার: / ইউএসআর / এসবিন / ক্রোন [-n] [-x [এক্সট্রাট, এসসি, প্রো, পার্ক, লোড, মিসক, পরীক্ষা, বিট]]

$

নীচের পৃষ্ঠায় একটি ভাল ব্যাখ্যা আছে।

উইন্ডোজে সাইগউইন ক্রোন পরিষেবা ইনস্টল ও কনফিগার করা: https://www.davidjnice.com/cygwin_cron_service.html

পিএস আমাকে উইন্ডোজ পরিষেবা হিসাবে ক্রোন ইনস্টল করতে আমার উইন্ডোজ 10 পিসিতে প্রশাসক হিসাবে সাইগউইন 64৪ টার্মিনালটি চালাতে হয়েছিল


0
Getting updatedb to work in cron on Cygwin -- debugging steps
1) Make sure cron is installed.
 a) Type 'cron' tab tab and look for completion help.
   You should see crontab.exe, cron-config, etc.  If not install cron using setup.
2) Run cron-config.  Be sure to read all the ways to diagnose cron.
3) Run crontab -e
 a) Create a test entry of something simple, e.g.,
   "* * * * * echo $HOME >> /tmp/mycron.log" and save it.
4) cat /tmp/mycron.log.  Does it show cron environment variable HOME
   every minute?
5) Is HOME correct?  By default mine was /home/myusername; not what I wanted.
   So, I added the entry
   "HOME='/cygdrive/c/documents and settings/myusername'" to crontab.
6) Once assured the test entry works I moved on to 'updatedb' by
   adding an entry in crontab.
7) Since updatedb is a script, errors of sed and find showed up in
   my cron.log file.  In the error line, the absolute path of sed referenced
   an old version of sed.exe and not the one in /usr/bin.  I tried changing my
   cron PATH environment variable but because it was so long crontab
   considered the (otherwise valid) change to be an error.  I tried an
   explicit much-shorter PATH command, including what I thought were the essential
   WINDOWS paths but my cron.log file was empty.  Eventually I left PATH alone and
   replaced the old sed.exe in the other path with sed.exe from /usr/bin.
   After that updatedb ran to completion.  To reduce the number of
   permission error lines I eventually ended up with this:
   "# Run updatedb at 2:10am once per day skipping Sat and Sun'
   "10 2  *  *  1-5  /usr/bin/updatedb --localpaths='/cygdrive/c' --prunepaths='/cygdrive/c/WINDOWS'"

Notes: I ran cron-config several times throughout this process
       to restart the cygwin cron daemon.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.