خب مساله اینجاست که توی استاندارد دایرکتوریهای unix (که لینوکس از این استاندارد پیروی میکنه) هر دایرکتوری برای یه چیز و یه کاری ساخته شده و نباید هرچیزی رو هرجایی بذاریم.
مثلا شما همهی لاگهای سیستم رو توی /var/log میبینید. هیچوقت هیچ نرمافزاری لاگهاش رو جای دیگه نگهداری نمیکنه.
همینطور درمورد فایلهای اجرایی. اصولا توی /opt نگهداری میشن.
مثلا من firefox و telegram و blender رو که میخواستم از روی سورس اجرا کنم (و از apt نگیرم) ریختمشون توی /opt و بعد یک symlink زدم از اینجا به /usr/bin
شما هم اگه میخواید اسکریپت پایتونتون از همهی یوزرها قابل اجرا باشه بهتره توی /opt قرارش بدید. دایرکتوری service داخل /etc هست. این دایرکتوری برای نگهداری تنظیمات نرمافزارهای مختلف هست (مثلا /etc/mysql/my.cnf) و اگه بخوایم چیزهای دیگهرو توش بذاریم شلخته میشه.
به نظر میرسه اینها رو میشه توی /var بسازه. البته اگه فایلها حیاتی نیستن و اشکالی نداره که با خاموش شدن سیستم، پاک بشن، میتونید اون فایلها رو داخل /tmp بسازید.
بله. به این شکل:
[Service]
User=root
Group=root
WorkingDirectory=/some/directory
ExecStart=python3 myscript.py
ولی پیشنهاد میشه اینکار رو انجام ندید. هرچیزی رو نباید root اجرا کنه. این حرکت یه کم خطرناکه.
یه راه، میتونه این باشه که توی /var یه دایرکتوری برای این اپلیکیشن درست کنید، بعد اون دایرکتوری رو به یه گروهی بدید که همه به اون گروه دسترسی دارن. مثلا:
sudo chown -R root:disk /var/myapp
اینطوری همهی کسانی که توی گروه disk هستن، میتونن اون دایرکتوری رو ببینن و استفاده کنن. توی تنظیمات service هم بگید که سرویس با این group ران بشه.