Linux невозможно выделить память

fork: невозможно выделить память

при выполнении команд над ssh . У меня 4 ГБ оперативной памяти и обычно 2 ГБ свободной. Это начало происходить с тех пор, как я обновился до Ubuntu 11.10.

Затем мне нужно повторно запустить команду, пока она не завершится успешно.

Я подключаюсь с моего ноутбука к серверу как из домашней сети. Иногда бывает, даже когда я запускаю apt-get.

2 ответа

Можете ли вы предоставить нам вывод ulimit -a , запущенного в сеансе, где это происходит?

/etc/pam.d/sshd должно включать pam_limits.so при открытии сеанса. Этот модуль будет использовать /etc/security/limits.conf для применения различных ограничений к вашему сеансу, в том числе в отношении использования памяти.

Я получал эту ошибку при попытке запустить top , когда мой раздел подкачки не был активен (0 разделов подкачки памяти), и она была устранена путем включения подкачки на /dev/sda5 :

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

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

  • Как скопировать, вставить и вырезать использовать командную строку на терминале ubuntu [duplicate] — 7 January 2018 20:13
  • Почему переменные как $PS1 в printenv не? — 8 December 2017 02:08
  • Как отладить ssh входящие соединения? — 22 August 2017 05:19
  • Не удалось SSH на сервере без ip? — 7 September 2017 05:50
  • Деформирует ли tar -tvf файл или просто перечисляет имена? — 15 May 2018 07:20
  • Как перенаправить вывод заданий в фоновом режиме? — 27 February 2011 02:38
  • Как нарисовать изображение с текстом в центре этого через командную строку? — 16 December 2014 15:13

Источник

-bash: fork: Невозможно выделить память

Когда я запускаю любую команду в оболочке bash, она возвращает:

$ free -m -bash: fork: Cannot allocate memory 

Затем я попытался отладить утечки памяти с помощью команды ps . Возвращает:

$ ps --sort -rss -eo rss,pid,command | head RSS PID COMMAND 518116 1310 /usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /etc/influxdb/influxdb.conf 281700 1912 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid 68260 23896 /home/alphauser/Envs/vogo-alpha/bin/python ./manage.py runserver 0.0.0.0:8008 43720 20201 python ./manage.py runserver 0.0.0.0:8008 36928 2223 rsyslogd 27432 1909 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid 25296 15009 /usr/bin/telegraf -pidfile /var/run/telegraf/telegraf.pid -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d 24428 32529 /usr/sbin/grafana-server --pidfile=/var/run/grafana-server.pid --config=/etc/grafana/grafana.ini cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins 20792 2314 /var/lib/waagent/Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025/bin/mdsd -A -C -c /var/lib/waagent/Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025/./xmlCfg.xml -p 29131 -R -r lad_mdsd -e /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.err -w /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.warn -o /var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic/2.3.9025/mdsd.info 

Как отлаживать? В чем основная проблема?

Читайте также:  Commands used in linux operating system

4 ответа

Я также столкнулся с этой проблемой с моим рабочим столом Ubuntu 14.04.

Даже эти основные команды показали, что невозможно выделить память. В ходе расследования выяснилось, что система использует всю память для кэширования и не освобождает память. Это называется Cache Ballooning и решается путем очистки кеша.

Сначала вы можете проверить использование системной памяти, чтобы увидеть, достаточно ли свободной памяти.

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

У меня такая же проблема. В моем случае, узнав о деталях памяти с помощью « proc / meminfo », я обнаружил идентификаторы, что они использовали много ресурсов ЦП и памяти с « TOP ». После этого я проверил, как долго они работают с » ps -o etime = -p» PID «. Msgstr «Затем я убиваю PID с помощью» kill -9 PID «.

В моем случае ОС работала без PID вместо памяти, сообщение об ошибке было то же самое.

Значение по умолчанию для максимального числа PID равно 32768, чтобы просмотреть значение, запустите

Чтобы изменить максимальный номер pid, запустите

echo 100000 > /proc/sys/kernel/pid_max 

В моем сценарии основной причиной было то, что один процесс Java порождал 18k + потоков (в ядре Linux, поток по сути является процессом), чтобы выяснить количество потоков каждого процесса, запустите

ps -eo nlwp,pid,args --sort nlwp 

Источник

unshare —pid /bin/bash — fork cannot allocate memory

I’m experimenting with linux namespaces. Specifically the pid namespace. I thought I’d test something out with bash but run into this problem:

unshare -p /bin/bash bash: fork: Cannot allocate memory 

2 Answers 2

The error is caused by the PID 1 process exits in the new namespace.

After bash start to run, bash will fork several new sub-processes to do somethings. If you run unshare without -f, bash will have the same pid as the current «unshare» process. The current «unshare» process call the unshare systemcall, create a new pid namespace, but the current «unshare» process is not in the new pid namespace. It is the desired behavior of linux kernel: process A creates a new namespace, the process A itself won’t be put into the new namespace, only the sub-processes of process A will be put into the new namespace. So when you run:

Читайте также:  Building qt creator linux

The unshare process will exec /bin/bash, and /bin/bash forks several sub-processes, the first sub-process of bash will become PID 1 of the new namespace, and the subprocess will exit after it completes its job. So the PID 1 of the new namespace exits.

The PID 1 process has a special function: it should become all the orphan processes’ parent process. If PID 1 process in the root namespace exits, kernel will panic. If PID 1 process in a sub namespace exits, linux kernel will call the disable_pid_allocation function, which will clean the PIDNS_HASH_ADDING flag in that namespace. When linux kernel create a new process, kernel will call alloc_pid function to allocate a PID in a namespace, and if the PIDNS_HASH_ADDING flag is not set, alloc_pid function will return a -ENOMEM error. That’s why you got the «Cannot allocate memory» error.

You can resolve this issue by use the ‘-f’ option:

If you run unshare with ‘-f’ option, unshare will fork a new process after it create the new pid namespace. And run /bin/bash in the new process. The new process will be the pid 1 of the new pid namespace. Then bash will also fork several sub-processes to do some jobs. As bash itself is the pid 1 of the new pid namespace, its sub-processes can exit without any problem.

Источник

Почему я часто получаю это & ​​ldquo; Невозможно выделить память & rdquo; ошибка?

Я использую Ubuntu 12.10 с Gnome-Classic. Я получаю эту ошибку часто и почти со всеми программами, большими и маленькими. Когда я пытаюсь открыть их, они не запускаются, и вместо этого я получаю сообщение об ошибке «113». Это не было проблемой, пока в течение последних нескольких недель.

cannot allocate memory

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

Единственный способ предотвратить эту ошибку — перезагрузить компьютер.

Читайте также:  Ammyy admin astra linux

Почему я получаю эту ошибку и что мне делать, чтобы она не произошла?

Я запустил memtest, доступный из меню GRUB, и он не сообщает об ошибках, поэтому я не думаю, что это аппаратный сбой.

Я также запустил sudo apt-get check , и ошибок не было найдено.

Вот некоторые запрошенные выходные данные командной строки:

$ free -m total used free shared buffers cached Mem: 3945 3753 191 0 181 475 -/+ buffers/cache: 3096 848 Swap: 3813 60 3753 $ swapon -s Filename Type Size Used Priority /dev/sda6 partition 3905532 61648 -1 $ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31421 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31421 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 

Это выходные данные ps —sort -rss -eo rss,pid,command | head после начала появления ошибки:

$ ps --sort -rss -eo rss,pid,command | head RSS PID COMMAND 1963400 2953 gnome-panel 155496 4029 banshee /usr/lib/banshee/Banshee.exe --redirect-log --play-enqueued 104944 15765 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.5.89177240 78164 15654 /opt/google/chrome/chrome 74912 19890 /usr/bin/python /usr/share/oneconf/oneconf-service 65476 12419 /usr/bin/perl /usr/bin/shutter 61096 19626 /usr/bin/python3.2 /usr/sbin/aptd 57832 15708 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --extension-process --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.2.1555888673 42108 3030 /var/lib/dropbox/.dropbox-dist/dropbox 

На основании предложений в комментариях и ответы, возможно, проблема в Gnome Panel или ее апплетах. Вот апплеты, которые я запускаю:

Panel applets

Апплеты — это Indicator Applet 12.10.1 , System Monitor 3.5.92 и «Область уведомлений». и «дата и время», для которых я не могу получить доступ к номеру версии.

Вот еще несколько запрошенных выходных данных командной строки:

$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda5 19G 12G 6.4G 64% / udev 2.0G 4.0K 2.0G 1% /dev tmpfs 790M 1.1M 789M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 84K 2.0G 1% /run/shm none 100M 0 100M 0% /run/user /dev/sda7 384G 306G 59G 84% /home mythbuntu@192.168.0.4:/home/mythbuntu 437G 360G 55G 87% /home/dave/Mythbuntu $ sudo du -csh /var/log 15M /var/log 15M total 

Источник

Оцените статью
Adblock
detector