Почему следующий вызов at не выполняет сценарий bash?

Я не могу оставить комментарий, поэтому я просто создам новый пост.

Проблема анализирует

Насколько мне известно, нет команды оболочки (, являющейся частью исправления bash ), которая используется для кэширования данных... однако эта доза не означает, что нет средств для ее реализации..

Как бы вы ни хотели реализовать это, полностью зависит от среды вашего дистрибутива и от того, на какой файловой структуре она построена. Стандарт иерархии файловой системы (вики)

Перейдите к разделу о соответствии FHS, и он в основном скажет вам, что не все дистрибутивы Linux созданы одинаково (case и укажите разные версии оболочки в разных дистрибутивах, также известные как bourn shell и kornshell )... В Сомме может быть /dev/shm В Сомме может не быть... Вот почему вы получили сообщение:

ls: /dev/shm: No such file or directory

Очевидно, что ваш дистрибутив без файла /dev/shm !!!


Хотя большинство:

Most Linux distributions follow the Filesystem Hierarchy Standard and declare it their own policy to maintain FHS compliance.

Вывод?!

Итак, теперь мой вопрос, как решить эту головоломку? ну я бы сказал, довольно просто...

Создать список всех потенциальных каталогов, которые хранятся в памяти, а не на жестком диске. и создайте условие if elif, в котором вы проверяете, существует ли файл или нет. Должен ли существовать один из файлов (, что больше, чем likley, если они не изменили структуру файла )Затем вы можете просто объявить переменную с именем temp и заполнить ее путем временной файловой системы tmpfs ()

Чтобы дать вам общее представление

#!/bin/bash                                                          

#/run directory as a temporary filesystem (tmpfs) 
#which stores volatile runtime data, following the FHS version 3.0.
if [ -e /run ]
    then
        temp='/run'
# with FHS version 2.3, such data were stored in /var/run
#for compatibility there might be a simlink
elif [ -e /var/run ]
    then
        temp='/var/run'
elif [ -e /dev/shm/]
    then
        temp='/var/shm'
elif [ -e /var/tmp ]
    then
        #this should not occur with the current fhs standerts
        #switching to /var/tmp just in case ;)
        temp='/var/tmp'
fi
echo $temp

Это просто для того, чтобы дать вам основную идею(Я все еще работаю над этим сам (для моего окончательного проекта;)

Дополнительно но я считаю, что это может быть полезно для других. Теперь вы можете просто создать файл в каталоге с именем процесса, за которым следует отметка времени, чтобы создать задание cron для автоматической очистки ваших временных заполнений через регулярные промежутки времени или просто вызовом команды rm, когда вы не файл больше не нужен.

PS Если вы найдете какие-либо дополнительные просьбы tmpfs, просто отредактируйте этот пост. Спасибо.

0
03.09.2021, 20:00
1 ответ

Вы выполняете сценарий немедленно и планируете его вывод для выполнения at. Излишне говорить, что это не удается.

Думаю, ты хочешь вот этого

#!/bin/bash
echo "Done!"

Допустим, вы записали это в файл с именем myscript.

Сделать его исполняемым:

chmod a+x myscript

Затем поставьте его в очередь на выполнение по адресу 15 :49 и перехватите вывод в myscript.log(, если вы не зафиксируете вывод, который будет отправлен по электронной почте на вашу локальную учетную запись UNIX/Linux, или если почтовая подсистема не установлена ​​по адресу все потом просто выбрасывается):

at 1549 <<'X'
./myscript > myscript.log 2>&1
X
5
03.09.2021, 22:11

Теги

Похожие вопросы