Linux, замораживающийся случайным образом

Если Вы используете версию "разработки" дурака (v1.5 +) - и Вы абсолютно должны - существует возможность использовать внешний фильтр, как описано в руководстве.

Сначала Вам нужен сценарий, который может произвести разные вещи согласно возрасту сообщения. Вот пример в Python:

#!/usr/bin/env python
"""mutt format date

Prints different index_format strings for mutt according to a
messages age.

The single command line argument should be a unix timestamp
giving the message's date (%{}, etc. in Mutt).
"""

import sys
from datetime import datetime

INDEX_FORMAT = "%Z {} %?X?(%X)&   ? %-22.22F  %.100s %> %5c%"

def age_fmt(msg_date, now):
    # use iso date for messages of the previous year and before
    if msg_date.date().year < now.date().year:
        return '%[%Y-%m-%d]'

    # use "Month Day" for messages of this year
    if msg_date.date() < now.date():
        return '%10[%b %e]'

    # if a message appears to come from the future
    if msg_date > now:
        return '  b0rken'

    # use only the time for messages that arrived today
    return '%10[%H:%m]'

if __name__ == '__main__':
    msg_date = datetime.fromtimestamp(int(sys.argv[1]))
    now = datetime.now()
    print INDEX_FORMAT.format(age_fmt(msg_date, now))

Сохраните это как mutt-fmt-date где-нибудь на Вашем ПУТИ.

Две вещи важны здесь:

  • Строка формата должна содержать одно происшествие {} который заменяется возвращаемым значением age_fmt() Python.
  • Строка формата должна закончиться a % так, чтобы Дурак интерпретировал его.

Затем можно использовать его в Вашем .muttrc следующим образом:

set index_format="mutt-fmt-date %[%s] |"

Дурак будет затем

  1. интерпретировать %[%s] согласно правилам для строк формата.
  2. звонить mutt-fmt-date с результатом 1. как аргумент (из-за | в конце).
  3. интерпретируйте то, что это возвращает из сценария как строка формата снова (из-за % в конце).

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

Вот версия в C, который работает несколько соответственно:

#include 
#include 
#include 

#define DAY (time_t)86400
#define YEAR (time_t)31556926

int main(int argc, const char *argv[]) {
    time_t current_time;
    time_t message_time;

    const char *old, *recent, *today;
    const char *format;

    current_time = time(NULL);

    if (argc!=6) {
        printf("Usage: %s old recent today format timestamp\n", argv[0]);
        return 2;
    }

    old = argv[1];
    recent = argv[2];
    today = argv[3];

    format = argv[4];

    message_time = atoi(argv[5]);

    if ((message_time/YEAR) < (current_time/YEAR)) {
        printf(format, old);
    } else if ((message_time/DAY) < (current_time/DAY)) {
        printf(format, recent);
    } else {
        printf(format, today);
    }

    return 0;
}

Это сочетается с muttrc строкой:

set index_format='mfdate "%[%d.%m.%y]" "%8[%e. %b]" "%8[%H:%m]" "%Z %%s %-20.20L %?y?[%-5.5y]&       ? %?M?+& ?%s%%" "%[%s]" |'

2
14.04.2019, 11:44
2 ответа

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

Что вам нужно сделать, так это переформатировать жесткий диск. Red Hat предлагает таблицу размеров подкачки здесь . Загрузите архив live cd и repartition и swapon / dev / sdaX . Если вам нужна ссылка, см. Руководство для начинающих по Arch Wiki .

Я предлагаю раздел, подобный следующему.

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298.1G  0 disk 
├─sda1   8:1    0   100M  0 part /boot
├─sda2   8:2    0    20G  0 part /
├─sda3   8:3    0     4G  0 part [SWAP]
└─sda4   8:4    0   rest  0 part /home

Это просто предлагается: вы можете делать все в одном разделе и не беспокоиться о многом (но это основной формат, который использует большинство людей). Если вы держите корневой раздел отдельно, не забудьте оставить его около 20-25 ГБ. Это вопрос безопасности, потому что пользователи должны устанавливать программы в свои собственные папки. Я обещаю, у тебя не закончится место. Pacman и yaourt позаботятся об этом за вас.

3
27.01.2020, 21:57

Вот некоторые моменты, которые могут немного помочь в диагностике проблемы:

  • Выполните команду free, чтобы увидеть использование памяти
  • Выполните top и затем нажмите M, чтобы отсортировать по использованию памяти или P, чтобы отсортировать по использованию процессора, чтобы увидеть, какая программа использует ваши ресурсы
  • Убедитесь, что на /etc/fstab есть строка для монтирования свопа - после free
  • посмотрите на /var/log/messages или, если Вы используете systemd запустите journalctl и выполните поиск предупреждений/ошибок.
2
27.01.2020, 21:57

Теги

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