একটি ক্রোন জব স্থাপন করা যা কোনও ছোমড / জোড় করে


9

আমি একটি ক্রোন জব সেট করতে চাই যা কোনও ডিরেক্টরিতে (ড্রপবক্স ডিরেক্টরি) পুনঃনির্বাচিতভাবে একটি chmod / chown করে।

কমান্ডগুলি ম্যানুয়ালি কার্যকর করার সময় এটি কাজ করে:

sudo chown -R $USER ~/Dropbox
sudo chmod -R u+rw ~/Dropbox

আমি এটিকে ক্রোন জবতে রূপান্তরিত করার চেষ্টা করেছি:

10      *       *       *       *       sudo chown -R $USER ~/Dropbox

তবে কাজটি মনে হচ্ছে না।

এই কিভাবে করবেন?


incron+ inotifyপরিষ্কার সমাধান হতে পারে :)
ফ্রেঞ্জ্লোরেঞ্জন

উত্তর:


9

আপনি নিজের রুট ক্রোন স্ক্রিপ্টটি (চলমান সম্পাদনা করুন sudo crontab -e) হতে চান:

 55 * * * * /bin/chown -R somename /home/somename/Dropbox && /bin/chmod u+rw /home/somename/Dropbox

ব্যবহার্যকারীর নাম ধরে নেওয়া somenameএবং /home/somename/Dropboxএটিই আপনার ড্রপবক্স ডিরেক্টরিটির পুরো পথ। রুট ব্যবহারকারী হিসাবে, to এ যায় /root


1
সুস্পষ্ট উত্তরের জন্য ধন্যবাদ! আমি মনে করি এটি আমাকে খুঁজে পাওয়া কয়েকটি হারিয়ে যাওয়া লিঙ্ক দেখায়। আমি আগামীকাল এটি প্রথম জিনিসটি পরীক্ষা করব :)
tvgemert

এটি পরীক্ষা করা হয়েছে, এবং এটি কাজ করছে!
টিভিজিমার্ট

2
গ্রেট; তার কাজ খুশি। পাঠ (ক) পরিবেশ ভেরিয়েবল মত আশা করবেন না হয় $PATHএকটি cronjob একটি যারা ব্যবহারকারী সাইন ইন সমতূল্য সংজ্ঞায়িত করা (যেমন, আমার linuxbox $ 'হোম' সংজ্ঞায়িত করা হয়, কিন্তু $ PATH- সেট করা হয় /usr/binএবং /binনিম্নলিখিতরূপে crontab পরিবর্তন এবং $ USER এর থেকে সংজ্ঞায়িত নয়; সুতরাং এই ক্ষেত্রে আপনাকে /binchmod / chown এর আগে নির্দিষ্ট করার দরকার নেই ), (খ) sudoস্ক্রিপ্টগুলিতে এড়ানো ( rootব্যবহারকারী হিসাবে ক্রোন টাস্ক চালানো ), (সি) রুট ব্যবহারকারী $HOMEআপনার / সাধারণ ব্যবহারকারীর পরিবর্তে / রুটকে উল্লেখ করবে , (ঘ) ~ডিফল্ট রানে (ক্রন স্ক্রিপ্ট-এ এড়িয়ে চলা উচিত #!/bin/sh
ড jimbob

আপনি যদি এর চেয়ে আরও জটিল কিছু করেন তবে ডেভিডের পরামর্শ অনুযায়ী একটি স্ক্রিপ্ট লেখার পরামর্শও দেব; একটি স্ক্রিপ্ট chmod / chown এর সংমিশ্রণের জন্য ওভারকিল বলে মনে হয়। তবে, আপনি যদি অন্য ব্যবহারকারীর ড্রপবক্স বা অন্যান্য ডিরেক্টরিতে আবেদন করতে শুরু করেন বা কেবল সম্প্রতি পরিবর্তিত ফাইলগুলি (যেমন, ফলাফল find) ইত্যাদি চালানোর সিদ্ধান্ত নেন তবে এটি কোনও স্ক্রিপ্টে রাখার অর্থ হয় না।
ডাঃ জিম্বোব

16

sudoপ্রায়শই নির্ধারিত কাজে ব্যবহার করা উচিত নয় । এটি কোনও টার্মিনালের সাথে কথা বলতে সক্ষম হতে পারে এবং এটি করার চেষ্টা এড়াতে নির্দিষ্ট পতাকা প্রয়োজন।

পরিবর্তে আপনার ক্রোন জবটি মূল হিসাবে তৈরি করুন (এতে /etc/crontab- নোট করুন যে এই ফাইলটির ফর্ম্যাটটি এর চেয়ে কিছুটা আলাদা :)। এটি ইনস্টলড নেই এমন সিস্টেমে কাজ করার সুবিধাও রয়েছে ।minute hour mday month wdayusercommand
sudo


ধন্যবাদ! আমি এটি তৈরি করেছি, তবে আমি এখনও এটি সম্পর্কে অনিশ্চিত। আমি প্রত্যাশিত ফলাফলটি 55 * * * * root chown -R somename ~/Dropbox
পাইনি

3
somenameকোথাও হতে পারে; এটি একটি আপেক্ষিক পথ। দ্বিতীয়ত, ~কেবল শেল দ্বারা বোঝা যায়; ব্যবহার $HOME। এর মতো একটি কমান্ড ব্যবহার করুন: chown -R /some/path/somename $HOME/Dropbox( rootএটির হোম ডিরেক্টরি ব্যবহার করবে ...)
মেই

@ ডেভিড: somenameকোনও পথ নয়, তবে ব্যবহারকারীর নাম (এবং এতে গ্রুপের নামও থাকা উচিত somename:somegroup:);)
নিটল

5
@tvgemert ডেভিড উপরে (এবং তার উত্তরে) পাথ / আপেক্ষিক পাথ / প্রতীকী পাথ ( ~) সম্পর্কে যা বলেছে তা অত্যন্ত গুরুত্বপূর্ণ - ক্রোন এবং ক্রোনট্যাব ম্যান পৃষ্ঠাগুলির সাথে কিছুটা সময় ব্যয় করুন এবং নিশ্চিত হন যে আপনি কী ঘটছেন তা নিশ্চিত হন (সন্দেহ হলে) , এমন একটি ক্রোন জব তৈরি করুন echo "what you want to do" > /tmp/what-i-would-runএবং ফলাফলগুলি তারা বুদ্ধিমান হওয়ার জন্য তা নিশ্চিত হন - মহাবিশ্বকে ধ্বংস করার খুব কম সুযোগ পাবেন
chance

দরকারী টিপস জন্য ধন্যবাদ, ইতিমধ্যে আমাকে আরও অন্তর্দৃষ্টি দিয়েছেন!
টিভিজমার্ট

6

দুটি সমস্যা:

1) আপনি লগ ইন করার সময় পাথগুলি সাধারণত ক্রোন তে সেট আপ করা হয় না /

2) সুডো সাধারণত আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করে, বা অন্যথায় অবিচলিতভাবে চালানোতে খুশি হতে পারে না। আমি আপনাকে পরামর্শ দিচ্ছি যে পরিবর্তে sudo ছাড়াই কমান্ডগুলি রুটের ক্রন্টবায় রেখে দিন, তারপরে কমান্ডগুলি রুট হিসাবে চলে।


5

আপনার ক্রোনটাব নিয়ে একাধিক সমস্যা রয়েছে:

10 * * * sudo chown -R $USER ~/Dropbox

বিষয়:

  • sudoএখানে ব্যবহার করা উচিত নয়; এটি টার্মিনাল ইনপুট প্রয়োজন
  • chownসম্পূর্ণরূপে নির্দিষ্ট করা উচিত (যেমন, /bin/chown)
  • USERপ্রকৃত পরিবর্তনশীল হিসাবে অস্তিত্ব থাকতে পারে; কিছু সিস্টেম ব্যবহারLOGNAME
  • ~(টিলড) কেবল শেল দ্বারা স্বীকৃত chownহবে - একটি খালি এটি বুঝতে পারবে না
  • রুটের ক্রন্টবায় হোম নির্দিষ্ট করে রুটের বাড়িতে যায়

আমি মনে করি আমি আসলে এটির স্ক্রিপ্ট করব:

#!/bin/bash

# FILE: /usr/local/bin/myscript

USER=$1
eval chown -R $1 ~$1/Dropbox
eval chmod -R u+rw ~$1/Dropbox

( evalরূপান্তর করতে প্রয়োজন হয় ~$1থেকে ~user তারপর থেকে /home/user।)

রুটের ক্রন্টব থেকে এই স্ক্রিপ্টটি চালান:

# root's crontab
10 * * * /usr/local/bin/myscript someuser

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.