Saya memiliki perintah launchctl berikut sebagai file .plist. Ini dimuat dan diatur untuk berjalan sekali sehari tetapi, perlu dijalankan sebagai root dan saya tidak yakin bagaimana memverifikasi ini.
Juga, tugas cron ini pada dasarnya CD ke direktori dan menjalankan perintah. Saya yakin launchd memiliki cara yang lebih baik untuk menentukan direktori di mana ia seharusnya menjalankan perintah.
Bagaimana saya tahu itu dijalankan sebagai root dan apakah ada cara yang lebih baik untuk menulis ini?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>dev.project.frontpage.feedparser</string>
<key>ProgramArguments</key>
<array>
<string>cd</string>
<string>/Users/eman/src/project/trunk/includes/;</string>
<string>./feed-parser.php</string>
<string>-c</string>
<string>./feed-parser-config.xml</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
launchctl
diperlukan menjalankan untuk menginstal daemon? Maksud saya, bukankah cukup untuk menyalin file plist ke jalur yang sesuai?Sudahkah Anda mencoba menggunakan salah satu editor launchd?
Untuk memastikan itu dijalankan sebagai root, saya cukup yakin launchd akan menjalankan program sebagai root. Pernah berpikir untuk memberikan kepemilikan skrip ke root menggunakan chmod? Dengan cara ini, itu tidak akan berjalan kecuali dijalankan sebagai root. Anda kemudian perlu memverifikasi bahwa itu berjalan.
sumber
Daftar properti di LaunchAgents juga berfungsi, tetapi Anda harus memuat kedua agen dan daemon dengan sudo:
Jika plist tidak memiliki kunci yang dinonaktifkan, itu dimuat pada login berikutnya atau restart secara default, dan
-w
tidak perlu.Catatan Teknis TN2083: Daemon dan Agen :
sumber
Untuk Googler yang ingin menjalankan Agen Peluncuran khusus dengan hak akses root sebagai bagian dari Daemon Peluncuran , hal itu dapat dilakukan dengan:
~/Library/LaunchAgents
sudo
viaProgramArguments
properti di plist AndaNOPASSWD
opsi untuk aplikasi Anda di/etc/resolvers.d
Untuk lebih detail, lihat ini dan jawaban ini .
sumber
LaunchControl membuatnya tidak menyakitkan bagi saya di Yosemite. Ini memiliki GUI drag-n-drop yang bagus untuk membantu Anda membuat atau mengedit layanan. Mengejutkan melihat semua layanan berjalan yang tidak saya ketahui.
Tangga
sumber