সিস্টেমড: স্টার্টআপে পাইথন স্ক্রিপ্ট চালান (ভার্চুয়ালেনভ)


11

আমার একটি অজগর স্ক্রিপ্ট রয়েছে যা আমি সাধারণত এই আদেশ দিয়ে এটি চালিত করি:

(environment) python run.py

আমি এই স্ক্রিপ্টটি শুরুতে চালাতে চাই। (আমি উবুন্টু ব্যবহার করছি) এখানে আমার পরিষেবা:

[Unit]
Description=My Script Service
After=multi-user.target

[Service]
Type=idle

ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py

[Install]
WantedBy=multi-user.target

বিটিডাব্লু, আমি এই স্ক্রিপ্টটি চালাতে পারিনি, তবে আমি এমন কোনও স্ক্রিপ্ট চালাতে পারি যা পরিবেশের মধ্যে নেই is প্রারম্ভকালে (ভার্চুয়ালেনভ) আমি কীভাবে পাইথন স্ক্রিপ্টটি চালাতে পারি?

sudo systemctl status user_sent
● user_sent.service - Mail Service
Loaded: loaded (/lib/systemd/system/user_sent.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since xxxxx 16:30:20 MSK; 3s ago
Process: 3713 ExecStart=/usr/bin/python run.py (code=exited,   status=200/CHDIR)
Main PID: 3713 (code=exited, status=200/CHDIR)

1
লগ এবং স্থিতি কি বলে?
ফেডেরিকো সিয়েরা

আমি আমার প্রশ্ন সম্পাদনা করেছি। অনেক ধন্যবাদ @ ফেডেরিকোসিয়েরা
জেসমিন

1
স্ক্রিপ্ট বাহিরে venv runnig হয়, /usr/bin/python run.pyদেখুন stackoverflow.com/questions/37211115/... এবং unix.stackexchange.com/questions/278188/...
ফেদেরিকো সিয়েরা

আমি তাদের চেষ্টা করেছিলাম। আমাকে "পাইথন রান.পি" চালাতে হবে "পাইথন / ইউজার_সেন্টস / রুন.পি" নয়
জুঁই

1
অজগর পথটি ভার্চুয়াল পরিবেশের ভিতরে সংস্করণে নির্দেশ করতে হবে, যেমন/path/to/your/virtualenv/bin/python
ফেডেরিকো সিয়েরা

উত্তর:


14

আপনার ইউনিট ফাইলটি সঠিক। যদি আপনি কোনও ভ্যাভের আওতায় কোনও অজগর ফাইল চালাতে চান তবে আপনার যেমন ভেন্ট ডিরেক্টরিতে করেছিলেন তেমন পাইথন বাইনারিটি উল্লেখ করতে হবে/home/user/anaconda3/bin/python

[Unit]
Description=My Script Service
After=multi-user.target

[Service]
Type=idle

ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py

[Install]
WantedBy=multi-user.target

কি লাঠি আউট কারণ আপনার ইউনিট ব্যর্থ হয় হল: code=exited, status=200/CHDIR। এটি সম্ভবত আপনার স্ক্রিপ্টের মধ্যে একটি ইঙ্গিত দেয়।

আপনি যদি এটি ডিবাগ করতে চান, আপনি নিম্নলিখিতগুলি করতে হবে:

  1. ExecStart=সমস্যাটি যদি আপনার স্ক্রিপ্টের কারণে ঘটে থাকে তবে আপনি এটির জন্য মূলের নীচে ঠিক যুক্ত করা কমান্ডটি চালান ।
  2. যদি এটি ত্রুটি ছাড়াই চলে, তবে জার্নালটি দেখুন journalctl -u <unit_name>। এটি আপনাকে আপনার ইউনিট সংক্রান্ত সমস্যাগুলি সম্পর্কে আরও কিছু তথ্য দেয়।

পোস্ট স্ক্রিপ্টাম

নিম্নলিখিত দুটি [Service]বিকল্পই কাজ করে:

ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py

অথবা

WorkingDirectory=/home/user/space
ExecStart=/home/user/anaconda3/bin/python run.py

পার্থক্য হ'ল আপনার স্ক্রিপ্টে আপেক্ষিক কলগুলি বিভিন্ন ডিরেক্টরি থেকে চালিত হয়। সুতরাং আপনার স্ক্রিপ্টে যদি একটি লাইন থাকে open("my_file", "w")তবে প্রথম উদাহরণে এটি একটি ফাইল তৈরি করবে /my_fileএবং দ্বিতীয়টি একটি ফাইল /home/user/space/my_file

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