Bagaimana cara mematikan server ubuntu dari skrip shell?

0

Saya menulis skrip shell sederhana untuk mematikan server ubuntu. Lalu saya membuat pekerjaan cron untuk mengeksekusi skrip ini pada 23:59 setiap hari.

#!/bin/bash
sudo shutdown -h now

Saya mendapat pesan kesalahan ini:

sudo: no tty present and no askpass program specified

ketika saya menghapus sudo dari kode, saya mendapat pesan kesalahan yang berbeda:

/home/qinking126/scripts/test.sh: line 3: shutdown: command not found

Bagaimana saya mengatasi ini?

qinking126
sumber

Jawaban:

3

Pastikan skrip cron dijalankan sebagai root, dan ganti shutdown oleh path lengkap yang diberikan kepada Anda oleh:

command -v shutdown

Pada Ubuntu GNU / Linux (dan GNU / Linux secara umum), seharusnya /sbin/shutdown :

#!/bin/bash
/sbin/shutdown -h now

Perhatikan bahwa menambahkan file bernama like /etc/cron.d/midnight-shutdown dan mengandung:

59 23   * * *   root    test -x /sbin/shutdown && /sbin/shutdown -h now

harus melakukan apa yang Anda inginkan tanpa overhead skrip bash penuh. Berikut adalah kode untuk menginstal ini dengan cepat:

echo '59 23 * * *   root    test -x /sbin/shutdown && /sbin/shutdown -h now' \
    | sudo tee '/etc/cron.d/midnight-shutdow'
sudo service cron reload

EDIT: Untuk membalas komentar Anda, kemungkinan pengaturan lain adalah:

echo '59 23 * * *   test -x /sbin/shutdown && /sbin/shutdown -h now' \
    | sudo tee '/etc/cron.d/midnight-shutdow'
sudo service cron reload

Cukup aneh bahwa cron mencetak pesan kesalahan ini kepada Anda.

Biapy
sumber
mendapat pesan kesalahan ini "/ bin / sh: 1: root: not found"
qinking126
menambahkan kemungkinan pengaturan lain.
Biapy
0

Kita juga dapat menggunakan perintah "sudo halt" untuk mematikan Server Ubuntu.

vembutech
sumber