Tidak dapat menjalankan tugas launchd


3

Saya sudah melakukan ini sekali dan saya mencoba melakukannya di komputer baru dan saya tidak dapat melihat kesalahan saya.

Saya memiliki skrip ruby ​​di folder pengguna saya bernama forecast.rb. Saya telah mengaturnya menjadi executable (a + x). Itu menulis garis keluar ke file lain bernama .weather.txt.

Saya ingin menjalankan forecast.rb setiap 5 menit.

Saya memiliki file plist bernama com.jwhite.forecast_tmux.plist. File itu terlihat seperti:

<?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>com.jwhite.forecast_tmux</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/jwhite/forecast.rb</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

File ini terletak di ~ / Library / LaunchAgents. Dan setelah memindahkannya di sana saya menjalankan Launchctl load -w ~ / Library / Launchagents / com.jwhite.forecast_tmux.plist.

Jika saya menjalankan forecast.rb (./forecast.rb) berjalan dengan baik. Tapi launchd saya tidak dieksekusi.

Apa yang saya lewatkan?

EDIT:

Saya sudah mulai menggunakan LaunchControl dan mendapatkan kesalahan.

/Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- geocoder (LoadError)
from /Users/jwhite/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/jwhite/forecast.rb:3:in `<main>'

Tetapi ketika saya menjalankan ini dari terminal semuanya dijalankan dengan baik. Jadi launchctl tidak bisa membaca di Ruby Gems?


Apa baris pertama skrip rb?
— Mark

Label harus cocok dengan nama file tanpa .plist.
— fd0

@ fd0 Sebenarnya tidak. Itu adalah copy / paste yang buruk dari ketika saya melakukan ini sebelumnya. Saya telah mengedit deskripsi untuk menunjukkan apa yang sebenarnya saya lakukan.
— James White

@ Mark baris pertama adalah #!/Users/jwhite/.rvm/rubies/ruby-2.2.1/bin/ruby
— James White

Apakah nama pengguna Anda jhwhite atau jwhite? Lihat apa yang telah Anda sajikan.
— fd0

Jawaban:


1

Saya memiliki masalah yang sama, mencoba menjalankan skrip pada interval menggunakan LaunchControl (aplikasi hebat, periksa). Akan menyalin dan menempel langsung dari sumber itu membantu saya:

Untuk program GUI, skrip lingkungan shell default diabaikan, dan karenanya   RVM mengelola versi ruby.

Solusinya adalah dengan mendefinisikannya melalui launchctl. Nilai-nilai itu hilang   meskipun setelah reboot, jadi saya meletakkannya di .bash_profile karena saya membuka shell bagaimanapun juga, lihat di bawah.

launchctl setenv GEM_HOME ~ / .rvm / gems / ruby-2.2.1   launchctl setenv GEM_PATH ~ / .rvm / permata / ruby-2.2.1: / Pengguna /markus /

Semua solusi permanen lainnya (mis. Launchd.conf) tidak berfungsi lagi di 10.10.   Semoga itu bisa membantu siapa saja yang mengalami masalah serupa.

Dalam kasus saya, saya hanya mengatur GEM_HOME dan PATH yang benar di LaunchControl.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.