Если Вы используете версию "разработки" дурака (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.%
так, чтобы Дурак интерпретировал его.Затем можно использовать его в Вашем .muttrc
следующим образом:
set index_format="mutt-fmt-date %[%s] |"
Дурак будет затем
%[%s]
согласно правилам для строк формата.mutt-fmt-date
с результатом 1. как аргумент (из-за |
в конце).%
в конце).Протест: сценарий будет выполняться для каждого сообщения, которое должно быть о быть отображенным. Получающаяся задержка может быть довольно 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]" |'
Ваша проблема в том, что у вас нет места для подкачки. Операционным системам требуется пространство подкачки, чтобы они могли освободить место в оперативной памяти и сохранить его на жестком диске.
Что вам нужно сделать, так это переформатировать жесткий диск. 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 позаботятся об этом за вас.
Вот некоторые моменты, которые могут немного помочь в диагностике проблемы:
free
, чтобы увидеть использование памяти top
и затем нажмите M
, чтобы отсортировать по использованию памяти или P
, чтобы отсортировать по использованию процессора, чтобы увидеть, какая программа использует ваши ресурсы/etc/fstab
есть строка для монтирования свопа - после free
/var/log/messages
или, если Вы используете systemd
запустите journalctl
и выполните поиск предупреждений/ошибок.