Разность: немного отличающиеся имена файлов, тот же файл

на новее в системе 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, убивая его заседания, и поэтому вы выходите в систему.

0
11.11.2014, 20:22
1 ответ

На это уже ответил @ 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

В этом случае я предлагаю запустить следующую программу

1
28.01.2020, 02:51

Теги

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