Запуск `sudo / sbin / service mysqld start` вызывает сбой системы

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

o=$(sed -ne'/regex/q;p' 

Или, если ваш $ {TMPDIR: - / tmp} находится в другой файловой системе, возможно:

{   cut -c2- | sed "$script" >file
} 

Потому что (большинство) оболочки помещают свои здесь-документы в удаленный временный файл. Это совершенно безопасно, пока дескриптор поддерживается от начала до конца и $ {TMPDIR: - / tmp} имеет столько места, сколько вам нужно.

Оболочки, которые не используют временные файлы, используют каналы, поэтому их использование небезопасно.Эти оболочки обычно являются производными ash , например busybox , dash , BSD sh - zsh , bash Однако , ksh и оболочка Bourne используют временные файлы.

по-видимому, я написал небольшую программу оболочки в июле прошлого года, чтобы сделать что-то очень похожее на это


Если / tmp нежизнеспособен, то пока вы можете уместить файл в memory что-то вроде ...

sed 'H;$!d;x' file;}

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

Более целенаправленным и эффективным решением могло бы быть:

sed '/regex/!H;$!d;x' file;}

... потому что оно не беспокоило буферизацию строк, которые вы все равно собирались удалить.

Проверка общего случая:

{   nums=/tmp/nums
    seq 1000000 >$nums
    ls -lh "$nums"
    wc -l  "$nums"
    sed 'H;$!d;x' <$nums | { read script &&  ### read always gets a blank
    sed "$script" >$nums;}
    wc -l  "$nums"
    ls -lh "$nums"
}

-rw-r--r-- 1 mikeserv mikeserv 6.6M Dec 22 20:26 /tmp/nums
1000000 /tmp/nums
1000000 /tmp/nums
-rw-r--r-- 1 mikeserv mikeserv 6.6M Dec 22 20:26 /tmp/nums

1
11.06.2020, 15:04
2 ответа

Из предоставленных вами выходных данных dmesg видно, что проблема действительно связана с убийцей OOM.
Обычно происходит следующее: при запуске mysql система исчерпывает всю доступную память. Когда это происходит, ядро ​​должно что-то убить, чтобы вернуть что-то. У него есть сложный алгоритм, который он использует, чтобы попытаться найти что-то, что можно убить, что не вызовет нестабильности системы. Алгоритм выбирает вашу оболочку. Затем, после того, как ваш снаряд убит, он обнаруживает, что этого недостаточно, и начинает убивать другие вещи. В конце концов он попадает в процесс mysql и убивает его.

Вывод dmesg также показывает, что у вас всего около 500 МБ памяти в системе. Обычно я думаю, что этого достаточно для запуска mysql, если он маленький, и если вам наплевать на производительность. Но, очевидно, это говорит об обратном.
Есть ли еще что-нибудь, работающее на компьютере, использующее много памяти? Вывод dmesg также должен был включать список процессов и количество потребляемой ими памяти.

Если больше ничего не использует ненормальный объем памяти, есть 2 варианта:

  1. Включить подкачку
  2. Добавить дополнительную память (использовать больший размер экземпляра).
5
29.04.2021, 00:44

В Linux можно задать переменную PS1 для создания собственной подсказки.

Например:

$ export PS1="hello "
hello #your new prompt

Дополнительные сведения о настройке модных подсказок см. в разделе: http://www.maketecheasier.com/8-useful-and-interesting-bash-prompts

-121--290771-

Таким образом, вы хотите написать пустую оболочку (интерпретатор команд). Минимальным решением будет цикл, который просто считывает строку, анализирует команду и ее аргументы и выполняет ее без каких-либо усовершенствований.

В python это можно сделать следующим образом:

import os
while True:
    argv = raw_input("> ").split()
    os.spawnv(os.P_WAIT, argv[0], argv)

Например, можно запустить

> /bin/ls -l /etc

Далее, вероятно, потребуется добавить поиск PATH , чтобы можно было просто ввести ls . После этого небо - предел.

-121--290770-

Похоже на старые файлы базы данных из существующей установки mysql. При наличии данных необходимо сохранить команду mysql_upgrade. Если существующие данные не нужны, удалите/var/lib/mysql и повторно запустите сценарий mysql_secure_installation.

-1
29.04.2021, 00:44

Теги

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