Моя петля останавливается, но не могу понять, почему

Это работало на Dell Inspiron 3647, работающем на Ubuntu Studio 14.04:

. Открыл терминал (Ctrl-Alt-T). Набрал «alsamixer» в приглашении, затем нажмите Enter Hit F6, затем выберите другой карта из того, что было перечислено. Протестировал звук с видео с Burning Spear на Youtube и получил звук

Надеюсь, это вам поможет.

0
задан 8 December 2017 в 10:10

3 ответа

Несколько вещей:

i всегда 1 в вашем скрипте AFAICT. Поэтому нет смысла использовать его, и это проще сделать:
while true; do
...
done
Вы exec ing pkill и wine. exec заменяет текущую оболочку командой, которая должна быть выполнена, поэтому ваш скрипт эффективно заканчивается, когда он exec. Просто сделайте pkill SAMBC.exe и wine C:\\SAMBC\\SAMBC.exe. Команда wine может потребоваться отправить в фоновый режим: wine C:\\SAMBC\\SAMBC.exe &. Если вы хотите получить использование ЦП определенного процесса, проще использовать pgrep, чтобы получить PID и ps, чтобы получить только использование ЦП:
process_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//')
Команда sed удаляет конечные десятичные числа.

Объединение и упрощение:

#!/bin/bash

CPU_USAGE_THRESHOLD="120"

while true; do
    proc_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//')

    if (( proc_usage > CPU_USAGE_THRESHOLD )); then 
        pkill SAMBC.exe;
        echo "process killed"
        sleep 30 
        wine C:\\SAMBC\\SAMBC.exe &
    fi
    sleep 60
done
3
ответ дан 22 May 2018 в 15:34
  • 1
    спасибо .. жаль, что я немного разозлился на ваш первый ответ .. снова я сделал небольшую ошибку ... не стоит отрицательной отметки ... это намного чище и функционирует так, как я хотел ... как я сказал .. Я просто хватал код и пытался его модифицировать, чтобы он работал .. с небольшим знанием самого кода. Хотелось бы, чтобы я мог отдать должное Джорджу Удосену за предложение shellchecker, потому что я видел что вам нужно было удалить exec и получить неаккуратный код для работы с его помощью .. но ваш чище и, вероятно, более стабильный .. спасибо и жаль снова – John Orion 8 December 2017 в 10:21

Несколько вещей:

i всегда 1 в вашем скрипте AFAICT. Поэтому нет смысла использовать его, и это проще сделать: while true; do ... done Вы exec ing pkill и wine. exec заменяет текущую оболочку командой, которая должна быть выполнена, поэтому ваш скрипт эффективно заканчивается, когда он exec. Просто сделайте pkill SAMBC.exe и wine C:\\SAMBC\\SAMBC.exe. Команда wine может потребоваться отправить в фоновый режим: wine C:\\SAMBC\\SAMBC.exe &. Если вы хотите получить использование ЦП определенного процесса, проще использовать pgrep, чтобы получить PID и ps, чтобы получить только использование ЦП: process_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//') Команда sed удаляет конечные десятичные числа.

Объединение и упрощение:

#!/bin/bash CPU_USAGE_THRESHOLD="120" while true; do proc_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//') if (( proc_usage > CPU_USAGE_THRESHOLD )); then pkill SAMBC.exe; echo "process killed" sleep 30 wine C:\\SAMBC\\SAMBC.exe & fi sleep 60 done
3
ответ дан 18 July 2018 в 01:36

Несколько вещей:

i всегда 1 в вашем скрипте AFAICT. Поэтому нет смысла использовать его, и это проще сделать: while true; do ... done Вы exec ing pkill и wine. exec заменяет текущую оболочку командой, которая должна быть выполнена, поэтому ваш скрипт эффективно заканчивается, когда он exec. Просто сделайте pkill SAMBC.exe и wine C:\\SAMBC\\SAMBC.exe. Команда wine может потребоваться отправить в фоновый режим: wine C:\\SAMBC\\SAMBC.exe &. Если вы хотите получить использование ЦП определенного процесса, проще использовать pgrep, чтобы получить PID и ps, чтобы получить только использование ЦП: process_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//') Команда sed удаляет конечные десятичные числа.

Объединение и упрощение:

#!/bin/bash CPU_USAGE_THRESHOLD="120" while true; do proc_usage=$(ps -o pcpu= $(pgrep SAMBC.exe) | sed 's/\..*//') if (( proc_usage > CPU_USAGE_THRESHOLD )); then pkill SAMBC.exe; echo "process killed" sleep 30 wine C:\\SAMBC\\SAMBC.exe & fi sleep 60 done
3
ответ дан 24 July 2018 в 17:25

Другие вопросы по тегам:

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