Порядок выполнения аргументов сенсорной команды

Для многих демонов в любой момент времени в системе должен работать только один экземпляр демона. В этом случае демон обычно хранит свой PID в хорошо известном каталоге (в Linux в настоящее время /run, ранее /var/run), чтобы указать, что экземпляр демона это работает.

Если вы попытаетесь вызвать второй экземпляр такого демона, вновь вызванный демон проверит существующую запись (представьте, что это файл блокировки) в папке /run и, если найдет, завершит работу.

Если демон перезапускается, PID нового экземпляра записывается в файл. Новый экземпляр получает свой собственный PID, нет возможности запустить процесс с заданным PID.

Файл PID также используется для определения того, какой процесс нужно убить, чтобы остановить демон.

0
08.08.2017, 19:52
2 ответа

Если время не указано, touchизменяет метки времени всех своих аргументов на текущее время в момент касания каждого файла, что должно создавать разные метки времени для каждого файла, но во многих случаях это приводит к применению одного и того же временная метка для всех его аргументов; вы можете проверить это, запустив statдля всех затронутых файлов. Они обрабатываются в порядке, указанном в командной строке.

Чтобы получить желаемый результат, вам нужно зациклить и touchкаждый файл по отдельности, с некоторой задержкой:

for file in {1..12}.txt; do touch $file; sleep 0.1; done

(с большей или меньшей задержкой в ​​зависимости от разрешения временной метки базовой файловой системы ).

Обратите внимание, что ls -tперечисляет файлы, отсортированные по убыванию метки времени; чтобы увидеть увеличение времени, вам нужно использовать ls -rt.

5
28.01.2020, 02:16

Возможно, это немного громоздко, но если это в скрипте, я бы использовал цикл for.

бывший:

for x in 1.txt 2.txt 3.txt 4.txt [as many as you want here]; do touch $x; done

Это привело бы к тому, что они всегда создавались бы в указанном порядке. Вы, конечно, можете изменить имена на любые и не следовать какой-либо схеме. Если вы создаете файлы с тем же именем или числовым шаблоном, как в вашем примере, я бы сделал это:

for x in $(seq 1 10); do touch $x.txt; done
0
28.01.2020, 02:16

Теги

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