IIRC, когда-то был патч только RedHat, который сделал это конфигурируемым в ядрах RedHat.
Инго Молнар предложил нечто подобное в 2007 году, но его патч не был объединен.
Текущие ядра используют фиксированный однодневный интервал, введенный передают 11ff6f05f1e836a6a02369a4c4b64757e484adc1 в марте 2009.
Отрывок из fs/inode.c:
/* * With relative atime, only update atime if the previous atime is * earlier than either the ctime or mtime or if at least a day has * passed since the last atime update. */ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, struct timespec now) { if (!(mnt->mnt_flags & MNT_RELATIME)) return 1; /* * Is mtime younger than atime? If yes, update atime: */ if (timespec_compare(&inode->i_mtime, &inode->i_atime) >= 0) return 1; /* * Is ctime younger than atime? If yes, update atime: */ if (timespec_compare(&inode->i_ctime, &inode->i_atime) >= 0) return 1; /* * Is the previous atime value older than a day? If yes, * update atime: */ if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60) return 1; /* * Good, we can skip the atime update: */ return 0; }
Я не совсем уверен, зависит ли это также от используемой файловой системы. Согласно linux-4.2.4/Documentation/filesystems/ocfs2.txt
, OCFS2
имеет atime _ quantum
...
-121--138912-
Самый простой способ сделать это - создать gzipped tarball:
#!/bin/bash
tar cvzf ~/backups/log`date +"%Y%m%d"`/backup.tar.gz /var/log
-121--248654-
Я бы определенно пошел с apt-пакетом (.deb). Вы будете гораздо проще управлять приложениями на целевых системах, и вы будете иметь гораздо более высокий уровень уверенности в ваших поставках программного обеспечения. APT - система скалы тела.
APT обеспечит разрешение всех программных обеспечений зависимостей. Python, с включенными «батарейками», имеет множество зависимостей от библиотек системного программного обеспечения. Если вы просто скачиваете код и перезаписываете приложение, то проверка того, что система содержит правильные версии библиотек, от которых может зависеть приложение, не выполняется. Это может привести к неправильному поведению приложения.
APT также выполняет большую проверку при создании пакета приложения. Существует множество инструментов APT и подсистем для построения пакетов python.
Я верю, что если вы попытаетесь создать собственную систему распределения, в долгосрочной перспективе вам придется разработать больше собственного кода и иметь больше логистических проблем.
С другой стороны, вам нужно будет научиться строить пакеты python в системе APT, что может быть очень важно, но я думаю, что это того стоит.
Как пользователь Debian и Ubuntu, разработчик, администратор и упаковщик более 15 лет, я бы не хотел, если бы поставщик хотел поставлять программное обеспечение вне системы APT из-за связанных с этим рисков.
Другой компонент, который вам не хватает, — это файл .Xauthority
. Он содержит «файл cookie сеанса», который создается заново каждый раз при перезапуске сервера X11, и клиент должен иметь его для отправки любых команд на сервер X11. Этот файл обычно находится в ~/.Xauthority
, хотя вы можете использовать переменную окружения $XAUTHORITY
, чтобы указать другое местоположение.
Чтобы управлять сеансом GUI, который не принадлежит вам, вам необходимо получить доступ к файлу cookie сеанса этого другого сеанса.Если у него другое значение $DISPLAY
, вы можете просто скопировать этот файл cookie сеанса в свой файл .Xauthority
с помощью команд xauth extract
и xauth merge
:
su newuser -c "xauth extract /home/newuser/.Xauthority $newuserDISPLAY" | xauth merge
Файл.Xauthority может одновременно содержать несколько файлов cookie сеанса для разных ДИСПЛЕЕВ.
Или, если файл cookie сеанса находится в уже доступном вам файле, вы можете использовать переменную $XAUTHORITY
, чтобы указать на него.
Это начинает казаться проблемой XY:у вас есть что-то, чего вы хотите достичь, и, возможно, зациклились на xdotool
предполагаемом способе достижения этого.
Но когда вы пытаетесь что-то автоматизировать, выполнение движений графического интерфейса с использованием xdotool
обычно является наименее удобным способом сделать это. Например, если вы хотите автоматизировать запуск Google Chrome от имени конкретного пользователя, вам не нужно имитировать щелчок по значку :, вы можете просто настроить правильное удостоверение и среду и просто запустить нужный процесс.
Например, чтобы запустить google-chrome
как пользователь newuser
, вы можете сделать:
su -lc "DISPLAY=<whatever> google-chrome" newuser
Поскольку команда su
имеет опцию -l
, процесс google-chrome
будет иметь право $HOME
для нового пользователя, поэтому он будет искать .Xauthority
в расположении по умолчанию, т. е. ~newuser/.Xauthority
. Вам просто нужно указать правильное значение для переменной $DISPLAY
, которое соответствует фактическому запущенному сеансу GUI newuser
. Если вы хотите, чтобы Google Chrome открывал определенный URL-адрес, вы можете указать его в качестве аргумента для google-chrome
в двойных кавычках.