'хороший' не действительно помощь на Linux

[

] Для вашего конкретного сценария будет работать в любом случае, за исключением того, что []./script.sh[] требует исполняемых и читаемых битов, в то время как []bash script.sh[] требует только читаемых битов.[

] [


] [

]Причина разницы в требованиях к разрешениям заключается в том, как загружается программа, интерпретирующая ваш сценарий:[

] [

    ] [
  • ][]. /script.sh[] заставляет оболочку выполнять файл так, как если бы он был обычным исполняемым файлом.[
  • ] [

] [

]Оболочка вилкирует себя и использует системный вызов (например, []execve[]), чтобы заставить операционную систему выполнить файл в процессе вилки. Операционная система проверит права доступа к файлу (следовательно, бит выполнения должен быть установлен) и перешлет запрос загрузчику программы [] [], который посмотрит на файл и определит, как его выполнить. В Linux скомпилированные исполняемые файлы начинаются с магическим номером []ELF[], в то время как скрипты начинаются с []#![] ([]hashbang[]). Заголовок хэшбэнга означает, что файл является скриптом и должен быть интерпретирован программой, которая указана после хэшбэнга. Это позволяет самому скрипту указывать системе, как интерпретировать скрипт.[

] [

]Загрузчик программы выполнит []/bin/bash[] и передаст []./script.sh[] в качестве аргумента командной строки.[

] [

    ] [
  • ][]bash скрипт. sh[] заставляет ваш оболочку выполнить []bash[] и передать []script.sh[] в качестве аргумента командной строки[
  • ] [

] [

] Так что операционная система загрузит []bash[] (даже не глядя на []script.sh[], потому что это просто аргумент командной строки). Созданный процесс []bash[] затем интерпретирует []script.sh[], потому что он передаётся в качестве аргумента командной строки. Так как []script.sh[] читается только []bash[] как обычный файл, бит выполнения не требуется.[

] [


] [

] Тем не менее, я рекомендую использовать []./script.sh[], потому что вы можете не знать, какой интерпретатор необходим для работы скрипта. Так пусть загрузчик программы определит это за вас.[

].

1
05.01.2015, 20:07
2 ответа

Как заявил Муру, , приятно только контролирует процессорное планирование. Вы сами отмечали, что использование ЦП было только около 5% в то время. Это означает, что система была сильно связана с IO, означающая чтение / запись дисков было узким местом.

Вы можете управлять приоритетом IO, приведенным к процессу через команду Ionice . Вы можете поставить процесс в одном из трех классов планирования:

  • IDLE - будет получать только время диска, когда ни одна другая программа не нуждается в диске
  • , - в основном по умолчанию
  • Realte - этот класс получает первый доступ к Диск, независимо от того, что еще происходит

, вы можете указать класс с опцией , 1 = Realtime, 2 = Best-Heife, 3 = простаивает.

С наилучшими усилиями и в реальном времени также есть 8 различных уровней приоритетов, для тонкой настройки среди процессов одного и того же класса.

Я обычно выполняет команды, такие как TAR или rsync с Ionice -C3 , то есть самый низкий класс «холостой». Таким образом, другие процессы не голодают от доступа к диску.

Обратите внимание, что IMHO Ionice работает лучше всего с планировщиком CFQ I / O (параметр ядра).

2
27.01.2020, 23:37

Возможно, поведение, которое вы наблюдаете, являются детали реализации вашей файловой системы - это может собрать много данных в память и написать его навалом. Простейший способ разрешить это - снизить объем данных, которые вы хотите написать =).Я бы сильно предположил, чтобы избежать проблемы, просто немедленно достичь вашего файла. Нет смысла в хранении безоговорочной смолы, если вы диск медленно. Чтобы создать архив, просто Add -z на вашу командную строку TAR: TAR RZF 2014-12.tar.gz 2014-12 - *. Журнал . Лучше использовать GZIP в большинстве случаев, поскольку он использует действительно несколько процессоров в оба сжимании, так и в декомпании. Этот подход уменьшит время создания TAR в 10 или 20, а также уменьшить объем данных для записи файловой системы такими же фактором.

Я также отметил бы, что ежедневное ручное Tarring - это рода странная идея. Я предлагаю вам настроить нормальную работу Logrory и Cron / AnaCron, поэтому система автоматически сделает все эти вещи для вас.

Какую файловую систему у вас кстати? (Использование Mount | GreeP $ (Stat --PrintF "% m".) )

0
27.01.2020, 23:37

Теги

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