как вызвать задание в определенное время

#linux

#linux

Вопрос:

Я новичок в Linux, и мне нужна помощь со сценарием. Я хочу, чтобы скрипт создал файл и дал всем разрешение на чтение, запись и выполнение его, и через одну минуту я хочу, чтобы разрешение было доступно только для чтения и выдавало эхо-сообщение «у вас больше нет доступа».

Я попробовал следующее, и оно создает и предоставляет разрешения, но повторяет сообщение «у вас больше нет доступа»..

 #!/bin/bash
echo "enter time"
read time

touch bin/jozat
echo chmod 777 bin/jozat | at now   1 minutes
echo chmod 700 bin/jozat | at now   2 minutes amp;amp; echo "you no longer have access"
  

Ответ №1:

Вы хотите использовать at(1).

Ответ №2:

Я не знаю, как использовать, at но готов поспорить, что ваш echo отправил бы вывод для какого-нибудь файла журнала. Кроме того, вы не хотите отправлять echo после обновления разрешений? Ваш скрипт выводит его сразу после регистрации разрешений, изменяющихся в at , а не при изменении разрешений.

Я бы заменил его на wall , который отправляет сообщение всем пользователям на всех терминалах. Итак, я бы написал

 echo 'chmod 700 bin/jozat amp;amp; echo "you no longer have access" | wall' | at now   2 minutes
  

вместо

 echo chmod 700 bin/jozat | at now   2 minutes amp;amp; echo "you no longer have access"
  

Обратите внимание, что вся команда chmod 700 bin/jozat amp;amp; echo "you no longer have access" | wall заключена в одинарные кавычки.

Это хорошее решение для вас?

Редактировать: wall команда отправляет сообщение всем пользователям на всех терминалах. Если вы хотите отправить сообщение только пользователю, выполняющему код, вы можете использовать write команду с текущим именем пользователя:

 echo 'chmod 700 bin/jozat amp;amp; echo "you no longer have access" | write `whoami`' | at now   2 minutes
  

Комментарии:

1. спасибо брандицци . я думаю, это может сработать. попробую это через минуту

2. большое спасибо брандицци. я протестировал это, оно работало со стеной. еще раз спасибо

3. Рад помочь. Кстати, вы видели мое последнее обновление? Существует решение, которое не показывает сообщения всем пользователям, а только для текущего. Это может быть лучше для вас и совсем не сложно.