То, как делает сценарий/программу, выполняется в Unix?

Я попробовал решение krubo за свой Thinkpad T420. Однако на последнем шаге с install, Я должен был добавить a --force сделать modprobe успешное; иначе это дало мне ту же ошибку как первоначально.

Однако, когда я пытаюсь изменить свои настройки батареи, echo команда к /sys/devices/platform/smapi/BAT0/stop_charge_thresh успешно, но после чтения его, cat все еще дает 100.

Также на перезагрузку, модуль больше не загружается, и я должен вручную modprobe снова. Это было зафиксировано путем добавления tp_smapi кому: /etc/modules.

Однако я рад сообщить, что hdaps работает; я должен был изменить последние настройки в /etc/defaults/hdaps, FORCEENABLE кому: yes. Я проверил его с помощью этой ссылки: Проверка hdapsd работает (ThinkPad Wiki).

3
12.03.2012, 01:38
2 ответа

В случае Вашего конкретного сценария, ни одного Myscript ни command D будет когда-либо выполняться. Вы определили функцию C, но Вы не называете его.

Порядок выполнения:

  1. command B выполнения к завершению.
  2. command E выполнения к завершению.

Если необходимо было звонить C, это работало бы Myscript к завершению, затем выполненному command D к завершению.

Все, что Вы вызываете в сценарии оболочки, работает в порядке, он замечен и работает к завершению. Если необходимо выполнить что-то параллельно с чем-то еще, необходимо использовать управление заданиями (выезд, как амперсанд & символ используется для помещения заданий в фоновом режиме). Быстрый пример:

A
B

Выполнения A пока это не сделано, затем работает B пока это не сделано. Концы сценария.

A &
B

Выполнения A в фоновом режиме, затем выполнения B на переднем плане. Сценарий оболочки заканчивается когда B завершился. A может все еще работать.

A &
B &

Выполнения A в фоновом режиме, затем (не ожидая A завершаться), выполнения B в фоновом режиме. Сценарий сразу заканчивается.

A &
B &
wait

Выполнения A в фоновом режиме, затем (не ожидая A завершаться), выполнения B в фоновом режиме. Сценарий затем ожидает обоих A и B завершаться перед выходом.

16
27.01.2020, 21:07
  • 1
    это была идиотичная ошибка не вызвать функцию извините... +1 для explanation.thanks –  munish 11.03.2012, 21:37

Существует исключение, которое будет детализировано позже, но те команды выполняются той же оболочкой (даже если Myscript открывает новую оболочку, это и command D будет обладать точно той же "родительской" оболочкой, которая выполняет их). Поскольку *ОТКЛОНЯЮТ оболочки, не поддерживают распараллеливание, Myscript должен остановиться его выполнение (с любыми кодами выхода) для разрешения управлению продвинулось command D.

Исключение имеет место, где Вы отсоединяетесь Myscript, с a NOHUP сигнал, или путем записи a & позади Myscript. Это поместит сценарий в фон.

Изучите следующий фрагмент кода:

openssl enc -e bf -in verybigfile -out outputfile -k thisismykey &; # this is a long operation because of the size of the very big file
echo 'hi!' # this will be written during the encrypting operation

Я надеюсь, что это почти очевидно теперь.


Ответ Alexios содержит большую точку: Вы не вызываете функцию, таким образом, она никогда не будет работать.

2
27.01.2020, 21:07

Теги

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