উবুন্টু 16.04 ক্রন দিয়ে স্ক্রীন লক করতে অক্ষম


1

আমি প্রতিদিন একটি নির্দিষ্ট সময়ে পর্দা লক করার জন্য cron ব্যবহার করতে ইচ্ছুক। আমি নিম্নলিখিত ধারণকারী একটি খুব সহজ স্ক্রিপ্ট আছে: gnome-screensaver-command -l (পর্দা লক)। আমি জানি যে এই প্রোগ্রামটি কাজ করে কারণ আমি টার্মিনালের মাধ্যমে এটি নিজে চালাচ্ছি এবং সাফল্যের সাথে দেখা করেছি, তবে ক্রন পর্দাটি লক করতে অক্ষম বলে মনে হচ্ছে। আমি উবুন্টু 16.04 এলটিএস ব্যবহার করছি যদি এটি সাহায্য করে। আমার crontab নিচে।

MALTO=arctic_hen7
SHELL=/bin/bash
25 7 * * * export DISPLAY=:0 && /home/arctic_hen7/bin/lockscreen

আমি cron পুনরায় আরম্ভ করার চেষ্টা করেছি এবং cron এর মাধ্যমে সরাসরি কমান্ডটি চালাচ্ছি (ফাইলটি চালানোর পরিবর্তে) এবং পদ্ধতিতেও কাজ করেনি। আমি টাস্ক চালানো এবং পরবর্তী মিনিটের জন্য অপেক্ষা সময় পরিবর্তন করার চেষ্টা করেছি, কিন্তু এটি চালানো হয় না, যাইহোক, যখন আমি রান service cron status, বুঝতে পেরেছি:

(arctic_hen7) RELOAD (crontabs/arctic_hen7)
pam_unix(cron:session): session opened for user arctic_hen7 by (uid=0)
(arctic_hen7) CMD (export DISPLAY=:0 && /home/arctic_hen7/bin/lockscreen)
(CRON) info (No MTA installed, discarding output)

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


(1) আপনি কি নিশ্চিত যে আপনার স্ক্রিপ্টটি এমনকি চলছে? মত একটি কমান্ড নির্বাণ চেষ্টা করুন date >> /tmp/lockscreen.log এটা. (2) এখনো ভাল, stdout, stderr, এবং প্রস্থান অবস্থা ক্যাপচার করুন ( $? ), তাদের লগ। (3) চেষ্টা করার জন্য অন্য কিছু: একটি কপি বা আপনার স্ক্রিপ্ট তৈরি করুন (উদাঃ, এটি কল করুন lockscreen0 ) এবং রাখা export DISPLAY=:0 যে স্ক্রিপ্ট মধ্যে কমান্ড।
Scott

আমি জানি না এটি আপনার উবুন্টু রূপে বিদ্যমান কিনা, কিন্তু আমার (কুবুন্টু) মধ্যে, "অ্যালার্ম" জিনিস পূর্বনির্ধারিত সময়ে কমান্ড চালাতে পারে। এটি একটি ভাল পছন্দ হতে পারে (গ্রাফিকাল ডেস্কটপের পরিবেশের সাথে লকার প্রক্রিয়া চলছে)।
xenoid

আপনি পোস্ট করতে পারেন দয়া করে /home/arctic_hen7/bin/lockscreen ফাইল? gnome-screensaver-command সম্ভবত না হয় cron পাথ
pim


উত্তর:


0

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

থেকে mssmtp কপি করার জন্য নির্দেশাবলী এখানে লিঙ্ক রোট প্রতিরোধ করতে:

শুরু করতে, আমাদের 3 প্যাকেজ ইনস্টল করতে হবে:

sudo apt-get install msmtp msmtp-mta ca-certificates

একবার এই ইনস্টল করা হয়, একটি ডিফল্ট কনফিগার প্রয়োজন। ডিফল্টরূপে msmtp / etc / msmtprc এ দেখবে, তাই আমি ভিম ব্যবহার করে তৈরি করেছি, যদিও কোনও টেক্সট এডিটর চালনা করবে। এই ফাইলটি এমন কিছু দেখেছিল:

# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Setup WP account's settings.
account <MSMTP_ACCOUNT_NAME>
host smtp.gmail.com
port 587
auth login
user <EMAIL_USERNAME>
password <PASSWORD>
from <FROM_ADDRESS>
logfile /var/log/msmtp/msmtp.log

account default : <MSMTP_ACCOUNT_NAME>

বড় হাতের যেকোনো একটি আইটেম (যেমন। <PASSWORD> ) আপনার কনফিগারেশন নির্দিষ্ট প্রতিস্থাপন প্রয়োজন জিনিস। ব্যতিক্রমটি হল লগ ফাইল, যে কোনও MSMTP ক্রিয়াকলাপ / সতর্কতা / ত্রুটিগুলি লগ ইন করতে চাইলে অবশ্যই এটি স্থাপন করা যেতে পারে।

একবার ফাইলটি সংরক্ষণ হয়ে গেলে, আমরা উপরের কনফিগারেশন ফাইলের অনুমতিগুলি আপডেট করব - যদি ফাইলটির অনুমতিগুলি খুব বেশি খোলা থাকে তবে msmtp চালানো হবে না - এবং লগ ফাইলের জন্য ডিরেক্টরি তৈরি করুন।

sudo mkdir /var/log/msmtp
sudo chown -R www-data:adm /var/log/msmtp
sudo chmod 0600 /etc/msmtprc

পরবর্তীতে লগস ফাইলগুলি খুব বেশি বড় না থাকার পাশাপাশি লগ ডিরেক্টরিটিকে আরও ছোট করে রাখা নিশ্চিত করার জন্য msmtp লগগুলির জন্য লগারোটেট কনফিগার করতে বেছে নেওয়া হয়েছে। এটি করার জন্য, আমরা /etc/logrotate.d/msmtp তৈরি করে নিম্নলিখিত ফাইলটি দিয়ে এটি কনফিগার করব। উল্লেখ্য যে এটি ঐচ্ছিক, আপনি এটি করতে না পারেন বা আপনি লগগুলি আলাদাভাবে কনফিগার করতে বাছাই করতে পারেন।

/var/log/msmtp/*.log {
rotate 12
monthly
compress
missingok
notifempty
}

এখন লগিং কনফিগার করা হয়েছে, আমাদের php / mcmtp /etc/php/7.0/apache2/php.ini সম্পাদনা করে এবং sendmail পাথটি আপডেট করে ব্যবহার করতে হবে।

sendmail_path =

থেকে

sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a <MSMTP_ACCOUNT_NAME> -t"

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

mail ('personal@email.com', 'Test Subject', 'Test body text');
exit();

এই বিন্দুতে যেকোনো ত্রুটি আউটপুটে প্রদর্শিত হবে যাতে পরীক্ষার তুলনায় কোন ত্রুটি নির্ণয় করা উচিত।

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