Вопрос Как запустить скрипт автоматически в Linux?


Я использую командную строку linux, и я начинаю с ней. Я создал два файла, test.sh а также test.log, процесс - любой выход, идущий к test.log и я получаю его успешно вывод в test.log, Я хочу запускать скрипт автоматически каждые 5 секунд и писать, только если есть какие-либо изменения с .sh файл.

test.sh содержит :

#!/bin/bash
while [ true ] ;
do
echo "" date and Time >> test.log
date +%x_r >> test.log
lsusb >> test.log

sleep 5;
done

Мой вопрос: Есть ли способ запустить его автоматически и только добавить новое изменение в файл с новой датой? например, если кто-то вставляет USB-устройство в мой компьютер, он добавит его с новой датой в существующий файл журнала.


4
2017-11-16 15:17


происхождения


Это кажется излишне сложным способом сделать это. Вы должны проверить manpages для cron - Simon Aronsson


ответы:


Это должно работать, оно хранит последний вывод lsusb в $ lastoutput и добавляет, если они не равны

#!/bin/bash
while [ true ] 
do
    currentoutput="$(lsusb)"
    if [ "$currentoutput" != "$lastoutput" ]
    then
        echo "" date and Time >> test.log
        date +%x_r >> test.log
        lastoutput="$(lsusb)"
        lsusb >> test.log
    fi
    sleep 5
done

1
2017-11-16 16:29



Спасибо, но таким образом он не сохранит новое изменение в файле .log, я попробую его, и он запущен в терминале не в файле .log - Ghassan
Да, это в терминале, но результат (новое изменение) должен перейти в файл .log, но этого не происходит. - Ghassan
@Ghassan имеет ли пользователь, запускающий скрипт, достаточно разрешений для записи в файле test.log? Может быть, вы создали файл как root и теперь используете его как обычного пользователя? - IanC
Мои извинения, я не понимал, что код не работает (я печатал на своем телефоне, и я не смог его протестировать). Я исправил его сейчас, он должен работать - Evan Chen
@Ghassan вы можете попробовать новый код? - Evan Chen


Вы должны:

  • поместите свой файл в /etc/init.d каталог
  • сделайте свой файл sh выполнимым (используйте chmod +x команда)

Если он не работает должным образом, создайте символическую ссылку на свой файл, чтобы /etc/rc.d/:

ln -s /etc/init.d/test.sh /etc/rc.d/ 

Может это поможет :)


-1
2017-11-16 17:25



Вопрос задает вопрос, как автоматически определять изменения, а не как начать загрузку - Evan Chen