Saya memiliki set cronjob ini:
* * * * * /usr/bin/systemctl suspend
Dan itu tidak berfungsi. Tapi saya bisa menjalankannya di shell dan berfungsi. Saya tidak mengerti apa yang mungkin tidak berhasil.
EDIT
Mengarahkan output kesalahan untuk /tmp/error
memberikan ini:
Failed to issue method call: Access denied
Failed to issue method call: Access denied
Pertanyaan saya adalah: Apakah cronjobs dijalankan sebagai pengguna khusus ( cron
misalnya), yang akan menjelaskan bahwa pengguna saya dapat menjalankan perintah, tetapi tidak dengan cron
sendirinya?
Penjelasan tambahan:
Ini adalah contoh minimal untuk menunjukkan masalah yang saya miliki dalam skrip (yang lebih masuk akal daripada perintah tunggal yang disediakan di sini)
systemctl
adalah bagian darisystemd
. Saya pikir reboot, shutdown, suspend bekerja dengan pengguna non-rootsystemd
. Bagaimanapun, ini bekerja pada sistem saya.Akhirnya, saya menggunakan Arch Linux dan
/bin
,/usr/sbin
,/sbin
semua symlink untuk/usr/bin
.
systemctl
masuk/usr/bin
dan menerimasuspend
seperti itu? Apa * nix yang Anda gunakan?systemctl suspend
tidak berfungsi pada distro Debian atau RedHat) dan begitu juga menjelaskan bahwa Anda sebenarnya tidak ingin melakukan apa yang Anda tunjukkan :). Juga, coba tambahkan2> /tmp/error
atau sesuatu untuk menangkap kesalahan yang mungkin Anda dapatkan. Akhirnya, beri tahu kami pengguna mana yang menjalankan crontab ini.Jawaban:
Saya tidak bisa menjawab, tetapi saya pikir saya bisa mengarahkan Anda ke arah yang benar. Saya menemukan ini di Arch Wiki halaman dari
systemd
:Ini menunjukkan kepada saya kemungkinan berikut:
Anda memiliki pengguna lain yang masuk. Mungkin Anda telah masuk melalui tty?
cron
menjalankan perintahnya menggunakan/bin/sh
. Secara default , pada Arch ini adalah symlink ke/bin/bash
. Ini berarticron
memulai bash shell non-interaktif yang kemudian mendeteksi bahwa ada sesi pengguna lain yang sedang berjalan (milik Anda), sehingga tidak memiliki hak untuk berjalansystemctl
meskipun berjalan sebagai pengguna Anda.Jadi, jika masalah Anda adalah karena
cron
tidak diizinkan berjalansystemctl
karena Anda sudah masuk, Anda mungkin dapat mengatasinya dengan bermain dengan polkit tetapi saya tidak memiliki pengalaman di sana sehingga saya tidak dapat membantu.sumber
w
danuptime
dari skrip dijalankan oleh cron. Keluaran mereka menunjukkan bahwa hanya ada pengguna. Jadi, apakah ini berarti ada masalah lain?Solusi yang mudah adalah dengan menggunakan crontab root bukan milik Anda. Edit dengan:
dari pada:
sumber
Mengutip dari sini :
sumber
Jika Anda menggunakan sistem crontab, maka Anda lupa bidang pengguna. Mencoba:
sumber
/etc/crontab
, apakah ini crontab yang Anda buatcron -e
sebagai pengguna normal?crontab -e
sebagai pengguna normal.systemctl suspend
tanpa sudo.Anda perlu menggunakan file konfigurasi systemd di
/etc/systemd/system
sumber