Как запустить файл PowerShell во время загрузки с правами root на Asterisk?

После того, как вы получите $ cd 101/, введите дополнительную косую черту, чтобы она выглядела как

$ cd 101//

, а затем Вкладка .

Эта двойная косая черта будет эквивалентна одинарной косой черте .

-1
28.04.2021, 09:57
1 ответ

(Я пишу это таким образом, чтобы другие пользователи, которые наткнулись на этот ответ, могли его использовать, а не только ОП.)

Существует несколько методов, доступных для такого рода проблем, а также проблемы и компромиссы -для каждого из них. Как правило, вам не нужен постоянно работающий процесс, который использует весь ваш ЦП/ОЗУ, иначе вы не сможете использовать систему!

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

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

Еще один способ (и есть еще способы )— использовать демон cronобщий для большинства (всех? )в системах *x для периодического запуска команды или, что более вероятно, сценария оболочки, например, раз в минуту. Этот метод также имеет подводные камни, но их обычно легче предпринять, чтобы избежать. Самая большая проблема, которую нужно настроить, обычно заключается в том, что ваш сценарий оболочки (, или powershell, или perl/pythen/другая команда/скрипт )должны обрабатыватьтолько один разпри каждом выполнении, а не в бесконечном цикле. Позвольте cronвыполнять его снова и снова неоднократно(cronсам по себе тщательно разработан для работы в качестве демона и обрабатывает все детали и многие проблемы, связанные с демоном, поэтому вам не нужно этого делать. )После завершения обработки закройте его как можно скорее, чтобы система и вы могли вернуться к другим делам, например к любимой игре. ;-)

Обычно самые большие проблемы, о которых вам нужно знать при работе с «заданиями cron»,:

1 :Установите интервалы достаточно далеко друг от друга, чтобы избежать перекрытия и многократного повторения (особенно бесконечных циклов! )внутри команды/скрипта. В противном случае cron запустит новый процесс, даже если предыдущий все еще зацикливается. Вскоре у вас будут сотни или тысячи запущенных, зацикленных и конфликтующих друг с другом скриптов, использующих ЦП, ОЗУ и т. д.

2 :Как и в предыдущем случае, вы хотите, чтобы ваш сценарий выполнял--и завершал--то, что ему нужно, как можно быстрее, прежде чем cronснова запустит сценарий, как указано выше.. ЕСЛИсуществует вероятность того, что две итерации будут перекрываться (, что может произойти при копировании большого файла по сети, например ), вам необходимо предусмотреть потенциальные проблемы параллелизма, взаимоблокировки и т. д. (Многие скрипты справляются с этим, отслеживая последний идентификатор процесса PID ()в файле *.pid, чтобы определить, выполняется ли предыдущая итерация, и прервать «новое» выполнение, если предыдущий все еще выполняется.)

3 :Также в данном случае необходимо убедиться, что в случае запуска нескольких процессов сценария только один из них выполняет операцию копирования. В противном случае они будут конфликтовать, когда оба пытаются скопировать один и тот же файл/данные. (Вот почему метод *.pid используется для прерывания, когда он обнаруживает, что предыдущее выполнение еще не завершено. Подробности того, как это сделать, я оставляю читателю в качестве упражнения... чтобы попрактиковаться в своих навыках поиска и исследования...)

4 :Последняя проблема, с которой вам, вероятно, придется столкнуться, — это права доступа и разрешения пользователей. Инструмент cronработает в разных режимах, --один из них является системным режимом, в котором конфигурации «crontab» необходимо указать, какая учетная запись пользователя должна выполнять команду/скрипт, и, таким образом, разрешения этой учетной записи пользователя ; И другой режим — для -пользователя, где cronуже знает, какая учетная запись пользователя должна выполнять команду/скрипт, потому что это уже подразумевается. (Обратите внимание, что cronне , а не выполняет пользователей ~/.bashrcили что-то еще, поэтому вам нужно будет включить это в команду/скрипт, если это необходимо.)

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

В заключение к OP:Я настоятельно рекомендую вам научиться использовать команду rsync, если сможете. Он имеет множество параметров для управления тем, как и что он копирует, определяет, существует ли уже файл, определяет, является ли один файл старше или новее другого, и многие другие функции, которые могут оказаться полезными.

1
29.04.2021, 14:18

Теги

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