de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 tomtomssi
tomtomssi
Question

Menjalankan skrip shell sederhana sebagai cronjob

Saya memiliki skrip shell yang sangat sederhana yang perlu saya jalankan sebagai cronjob, tetapi saya bahkan tidak bisa menjalankan skrip tes. Berikut ini dan contoh skripnya:

/home/myUser/scripts/test.sh

#!/bin/bash
touch file.txt

crontab:

* * * * * /home/myUser/scripts/test.sh

Skrip berjalan dengan baik dari terminal tetapi tidak bisa't membuatnya berjalan sebagai cronjob. Sejauh ini saya sudah mencoba ini di crontab:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * /bin/bash /home/myUser/scripts/test.sh

Dan ini di file skrip:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/myUser/scripts

Dari apa yang saya kumpulkan solusinya mungkin ada di variabel PATH tetapi saya tidak tahu apa itu karena pemahaman saya sangat terbatas pada saat ini. Jadi pertanyaan saya adalah, bagaimana cara membuat skrip saya berjalan sebagai cronjob?

EDIT: file memiliki izin rwx untuk semua pengguna. Ini hanya untuk tujuan pengujian.

EDIT: cronjobs seperti * * * * * * * touch /home/myUser/scripts/test.txt berfungsi tetapi tidak akan menjalankan skrip.

18 2013-11-03T15:49:39+00:00 3
 tomtomssi
tomtomssi
Pertanyaan edit 3 November 2013 в 5:10
Pemrograman
cron
shell
bash
crontab
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 sn0w
sn0w
3 November 2013 в 4:13
2013-11-03T16:13:27+00:00
Lebih
Sumber
Sunting
#22701308

Cara termudah adalah dengan menggunakan GUI:

Untuk Gnome gunakan gnome-schedule (universe)

sudo apt-get install gnome-schedule 

Untuk KDE gunakan kde-config-cron

It should be pre installed on Kubuntu

Tetapi jika Anda menggunakan linux tanpa kepala atau tidak menginginkan GUI, Anda dapat menggunakan:

crontab -e

Jika anda mengetikkannya di Terminal, anda akan mendapatkan sebuah tabel.
Anda harus memasukkan cronjob anda sekarang.
Format sebuah job seperti ini:

*     *     *     *     *  YOURCOMMAND
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Day in Week (0 to 7) (Sunday is 0 and 7)
|     |     |     +------- Month (1 to 12)
|     |     +--------- Day in Month (1 to 31)
|     +----------- Hour (0 to 23)
+------------- Minute (0 to 59)

Ada juga beberapa celana pendek (jika Anda tidak menginginkan *):

@reboot --> only once at startup
@daily ---> once a day
@midnight --> once a day at midnight
@hourly --> once a hour
@weekly --> once a week
@monthly --> once a month
@annually --> once a year
@yearly --> once a year

Jika Anda ingin menggunakan celana pendek sebagai cron (karena mereka tidak´tidak bekerja atau lebih):

@daily --> 0 0 * * *
@midnight --> 0 0 * * *
@hourly --> 0 * * * *
@weekly --> 0 0 * * 0
@monthly --> 0 0 1 * *
@annually --> 0 0 1 1 *
@yearly --> 0 0 1 1 *
12
0
Solution / Answer
Gordon Davisson
Gordon Davisson
3 November 2013 в 4:47
2013-11-03T16:47:45+00:00
Lebih
Sumber
Sunting
#22701309

Di direktori apa file.txt berada? cron menjalankan pekerjaan di direktori rumah Anda, jadi kecuali jika skrip Anda ada di tempat lain, di situlah ia akan mencari/membuat file.txt.

EDIT: Ketika Anda merujuk ke sebuah file tanpa menentukan jalur lengkapnya (misalnya file.txt, bukan jalur lengkap /home/myUser/scripts/file.txt) di shell, maka Anda dianggap merujuk ke file di direktori kerja Anda saat ini. Ketika Anda menjalankan skrip (baik secara interaktif atau melalui crontab), direktori kerja skrip tidak ada hubungannya sama sekali dengan lokasi skrip itu sendiri; sebagai gantinya, direktori kerja itu diwarisi dari apa pun yang menjalankan skrip.

Jadi, jika Anda cd (mengubah direktori kerja) ke direktori tempat skrip berada dan kemudian menjalankannya, file.txt akan merujuk ke file di direktori yang sama dengan skrip. Tetapi jika Anda tidak cd terlebih dahulu, file.txt akan merujuk ke file di direktori mana pun Anda berada ketika Anda menjalankan skrip. Misalnya, jika direktori rumah Anda adalah /home/myUser, dan Anda membuka shell baru dan segera menjalankan skrip (sebagai scripts/test.sh atau /home/myUser/scripts/test.sh; ./test.sh tidak akan berfungsi), itu akan menyentuh file /home/myUser/file.txt karena /home/myUser adalah direktori kerja Anda saat ini (dan karena itu juga direktori kerja skrip).

Ketika Anda menjalankan skrip dari cron, pada dasarnya melakukan hal yang sama: skrip menjalankannya dengan direktori kerja yang diatur ke direktori rumah Anda. Dengan demikian semua referensi berkas dalam skrip diambil relatif ke direktori rumah Anda, kecuali jika skrip cd di tempat lain atau menentukan path absolut ke berkas tersebut.

Gordon Davisson
Gordon Davisson
Jawaban edit 3 November 2013 в 8:16
11
0
 virus
virus
3 November 2013 в 4:00
2013-11-03T16:00:52+00:00
Lebih
Sumber
Sunting
#22701307

Ini harus berjalan dengan baik di cron juga. Silakan periksa hal-hal di bawah ini.

1- Anda mengedit file yang tepat untuk mengatur cron.

2- Anda telah memberikan izin yang tepat (izin eksekusi) ke skrip berarti skrip Anda dapat dieksekusi.

0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi