на новее в системе Upstart, A сеанс INIT процесс начал при входе в систему, используя графический интерфейс. Поскольку Ubuntu использует Upstart, есть процесс INIT
для вашего сеанса. Протестируйте его с использованием PSTREE -PS $$
в терминале:
$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)
└──zsh(7944)
Итак, при запуске init
, вы не убиваете init
PID 1 ( Потому что у вас нет привилегии), но ваша сессия init
, которая была бы PID 9526 в этом примере.
Поскольку этот init
- это процесс управления для вашей сессии GUI, убивая его заседания, и поэтому вы выходите в систему.
На это уже ответил @ SuB Ask Ubuntu . Я адаптировал ответ для CentOS:
Эти счетчики хранятся в ядре, поэтому ваш ответ зависит от того, как построен драйвер вашей сетевой карты. Два возможных выборе:
Во втором случае сброс счетчиков невозможен. В первом случае это можно сделать, выгрузив модуль из ядра и загрузив его обратно. Если плата NIC использует модуль e1000, используйте следующие команды:
ifconfig eth0 down
modprobe -r e1000
modprobe e1000
ifconfig eth0 up
Используйте ethtool
для получения информации о модуле NIC:
ethtool -i eth0
После «driver» появится имя модуля:
driver: e1000
версия: 7,3 .21-k8-NAPI
версия встроенного ПО:
...
Используйте yum
для установки ethtool
следующим образом:
yum install ethtool
-121--56443- С помощью оболочки zsh
:
tail -n 5 ./*.aff(D.om[1])
С помощью других оболочек довольно сложно придумать что-то надежное, если вы не хотите делать предположения о том, какие имена файлов могут содержать.
Например, эквивалент bash
, если вы находитесь в недавней системе GNU, будет:
find . -maxdepth 1 -name '*.aff' -type f -printf '%T@:%p\0' |
sort -rzn |
sed -zn 's/[^:]*://p;q' |
xargs -r0 tail -n 5
Или:
find . -maxdepth 1 -name '*.aff' -type f -printf '%T@/%p\0' |
sort -rzn | (IFS=/ read -rd '' mtime file && tail -n 5 "$file")
-121--59848- Вы не можете сделать это с помощью «просто» diff
, так как имена файлов не совпадают как в каталогах, так и diff не имеет ничего встроенного для выполнения сопоставления.
Что вы можете сделать, так это изменить «новый» каталог и сделать:
for i in *; do diff "$i" /path/to/other/dir/"$i"; done
или, изменить на восстановленный резервный каталог и сделать:
for i in *.archive; do diff "$i" /path/to/new/dir/"${i%.archive}"; done
Если это распространяется на всю структуру каталога, это становится несколько сложнее. Если оригиналы находятся в a
, а резервная копия временно восстановлена в backup/b
:
.
├── a
│ ├── p
│ │ ├── x
│ │ ├── y
│ │ └── z
│ └── q
│ ├── 1
│ ├── 2
│ └── 3
└── backup
└── b
├── p
│ ├── x.archive
│ ├── y.archive
│ └── z.archive
└── q
├── 1.archive
├── 2.archive
└── 3.archive
Можно запустить следующий сценарий с python toddiff.py a backup/b > todiff
(todiff не указан в вышеприведенной древовидной структуре).
import sys
import os
base = sys.argv[1]
if base[-1] != '/':
base += '/' # this last / needs to be removed to create bup_file_name
backup = sys.argv[2]
for root, directory_names, file_names in os.walk(base):
for file_name in file_names:
full_name = os.path.join(root, file_name)
bup_file_name = os.path.join(backup, full_name.replace(base, '', 1))
bup_file_name += '.archive'
# adjust the diff options to your need in the following line
print('diff -u "{}" "{}"'.format(full_name, bup_file_name))
Это приведет к созданию файла формы
diff -u "a/q/3" "backup/b/q/3.archive"
diff -u "a/q/1" "backup/b/q/1.archive"
diff -u "a/q/2" "backup/b/q/2.archive"
.
.
, который затем можно будет загрузить с: source ./todiff
В этом случае я предлагаю запустить следующую программу