Простые сценарии обертки, порождающие 100 с процессов удара

Я не совсем уверен, берете ли Вы о планировании ввода-вывода Ядра. В случае, если Вы не: Проигнорируйте этот ответ.

Состояния Википедии, что CFG (абсолютно Справедливая Организация очередей) является значением по умолчанию начиная с Ядра 2.6.18.

На моем openSUSE (выполняющий Ядро 2.6.37) я могу переключиться между CFG, NOOP и Крайний срок.

2
26.10.2011, 18:18
2 ответа

Кажется, что Вы назвали свой сценарий gcc, поместили его в путь и затем назвали его рекурсивно. Или назовите свой сценарий чем-то другим или используйте явный путь к gcc исполняемому файлу, который Вы на самом деле хотите использовать.

8
27.01.2020, 21:49

Kevin уже нашел базовую проблему, а именно, что Вы называете свой собственный сценарий рекурсивно.

Простой способ избежать этого состоит в том, чтобы назвать перенесенную программу с полным путем. Более необычный путь состоит в том, чтобы исследовать $PATH вручную и пропуск Ваш собственный сценарий (как определено с $0).

find_command () {
  script_dir={1%/*}; command_name=${1##*/}
  real_command=
  IFS=':'; set +f
  for d in $PATH; do
    if [ "$d" = "$script_dir" ]; then continue; fi
    if [ -x "$d/$command_name" ]; then real_command="$d/command_name" break; fi
  done
  set -f; unset IFS
  [ -n "$real_command" ]
}
find_command "$0" || {
  echo 1>&2 "$0: cannot find underlying command in \$PATH=$PATH"
  exit 2
}
exec "$0" -m32 "$@"

Некоторые дополнительные подсказки:

  • Использовать exec если Вам не нужна оболочка еще, после того как Вы запустили реальную команду. Некоторые оболочки знают, чтобы сделать это как оптимизацию, но не все.
  • Использовать #!/bin/sh вместо #!/bin/bash если Вы не используете функции удара. Во многих системах, sh более минимизированная, более быстрая оболочка, чем bash, с меньшим количеством функций, но сценариями обертки редко нуждаются в этих расширенных функциях.
5
27.01.2020, 21:49

Теги

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