Автор Тема: Приёмы профессиональной работы в shell (справочник - вопросы не задавать. )  (Прочитано 175029 раз)

Оффлайн Листик

  • Завсегдатай
  • *
  • Сообщений: 200
Коллекция открытых уроков по Линукс, в т.ч. есть курс, посвященный основам работы в командной строке:

https://stepic.org/library?concept=11491

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Получение информации о компьютере

Модель системной платы
# dmidecode -t baseboard | grep 'Manufacturer\|Product\|Version'
        Manufacturer: ASUSTeK COMPUTER INC.
        Product Name: H61M-PRO
        Version: Rev X.0x

BIOS системной платы
# dmidecode -t bios | grep 'Vendor\|Version\|Release'
        Vendor: American Megatrends Inc.
        Version: 0312
        Release Date: 10/29/2013

Коннекторы системной платы
# dmidecode -t connector | grep 'Port\|Internal'
Port Connector Information
        Internal Reference Designator: PS/2 Mouse
        Internal Connector Type: None
        Port Type: Mouse Port
Port Connector Information
        Internal Reference Designator: PS/2 Keyboard
        Internal Connector Type: None
        Port Type: Keyboard Port
Port Connector Information
        Internal Reference Designator: USB_12
        Internal Connector Type: None
        Port Type: USB
Port Connector Information
        Internal Reference Designator: USB_34
        Internal Connector Type: None
        Port Type: USB
Port Connector Information
        Internal Reference Designator: USB_56
        Internal Connector Type: None
        Port Type: USB
Port Connector Information
        Internal Reference Designator: USB3_E12
        Internal Connector Type: None
        Port Type: USB
Port Connector Information
        Internal Reference Designator: GbE LAN
        Internal Connector Type: None
        Port Type: Network Port
Port Connector Information
        Internal Reference Designator: AUDIO
        Internal Connector Type: None
        Port Type: Audio Port
Port Connector Information
        Internal Reference Designator: DVI
        Internal Connector Type: None
        Port Type: Other
Port Connector Information
        Internal Reference Designator: SATA3G_1
        Internal Connector Type: SAS/SATA Plug Receptacle
        Port Type: SATA
Port Connector Information
        Internal Reference Designator: SATA3G_2
        Internal Connector Type: SAS/SATA Plug Receptacle
        Port Type: SATA
Port Connector Information
        Internal Reference Designator: SATA3G_3
        Internal Connector Type: SAS/SATA Plug Receptacle
        Port Type: SATA
Port Connector Information
        Internal Reference Designator: SATA3G_4
        Internal Connector Type: SAS/SATA Plug Receptacle
        Port Type: SATA
Port Connector Information
        Internal Reference Designator: USB_78
        Internal Connector Type: Access Bus (USB)
        Port Type: USB
Port Connector Information
        Internal Reference Designator: AAFP
        Internal Connector Type: Mini Jack (headphones)
        Port Type: Audio Port
Port Connector Information
        Internal Reference Designator: CPU_FAN
        Internal Connector Type: Other
        Port Type: Other
Port Connector Information
        Internal Reference Designator: CHA_FAN
        Internal Connector Type: Other
        Port Type: Other
Port Connector Information
        Internal Reference Designator: COM
        Internal Connector Type: DB-9 male
        Port Type: Serial Port 16550A Compatible
Port Connector Information
        Internal Reference Designator: LPT
        Internal Connector Type: DB-9 male
        Port Type: Serial Port 16550A Compatible
Port Connector Information
        Internal Reference Designator: VGA
        Internal Connector Type: Other
        Port Type: Other

Слоты системной платы
# dmidecode -t slot | grep '^System\|Designation\|Type'
System Slot Information
        Designation: PCIEX16
        Type: 32-bit PCI Express
System Slot Information
        Designation: PCIEX1_1
        Type: 32-bit PCI Express
System Slot Information
        Designation: PCI1
        Type: 32-bit PCI

Процессор
# dmidecode -t processor | grep 'Socket\|Manufacturer\|Signature\|Version\|Voltage\|Speed\|Core Count\|Thread Count'
        Socket Designation: LGA1155
        Manufacturer: Intel
        Signature: Type 0, Family 6, Model 42, Stepping 7
        Version: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
        Voltage: 1.0 V
        Max Speed: 3800 MHz
        Current Speed: 3100 MHz
        Core Count: 2
        Thread Count: 2
# grep 'processor\|model name\|MHz\|core id\|cpu cores\|address sizes' /proc/cpuinfo
processor       : 0
model name      : Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
cpu MHz         : 1637.550
core id         : 0
cpu cores       : 2
address sizes   : 36 bits physical, 48 bits virtual
processor       : 1
model name      : Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
cpu MHz         : 1695.675
core id         : 1
cpu cores       : 2
address sizes   : 36 bits physical, 48 bits virtual
processor       : 2
model name      : Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
cpu MHz         : 1698.945
core id         : 0
cpu cores       : 2
address sizes   : 36 bits physical, 48 bits virtual
processor       : 3
model name      : Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz
cpu MHz         : 1682.839
core id         : 1
cpu cores       : 2
address sizes   : 36 bits physical, 48 bits virtual

Текущая частота процессора
# grep 'processor\|MHz' /proc/cpuinfo
processor       : 0
cpu MHz         : 1698.824
processor       : 1
cpu MHz         : 1702.578
processor       : 2
cpu MHz         : 1609.820
processor       : 3
cpu MHz         : 1692.042

Память в системной плате
# dmidecode -t memory | grep 'Bank\|Size\|  Type\|Speed\|Maximum'
        Size: 4096 MB
        Bank Locator: BANK 0
        Speed: 1333 MHz
        Configured Clock Speed: 1333 MHz
        Maximum Capacity: 16 GB
        Size: 4096 MB
        Bank Locator: BANK 2
        Speed: 1333 MHz
        Configured Clock Speed: 1333 MHz

Видеокарта
# lspci -k|grep -A2 VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GT218 [GeForce 210] (rev a2)
        Subsystem: Gigabyte Technology Co., Ltd Device 34ef
        Kernel driver in use: nvidia

Температура GPU nVidia
$ nvidia-settings -q [gpu:0]/gpucoretemp -t
31

Частота вращения вентилятора видеокарты nVidia
$ nvidia-settings -q [fan:0]/gpucurrentfanspeedrpm -t
1380

Объём видеопамяти видеокарты nVidia
$ nvidia-settings -q [gpu:0]/videoram -t
1048576
$ nvidia-settings -q :0.0/videoram -t
1048576

Список всех атрибутов nVidia
$ nvidia-settings -q all|grep Attribute|awk '{print $1,$2}'|sort -u

Получение параметров и модели монитора/дисплея через возврат edid
xrandr --props | edid-decode

Модель винчестера (Hard Disk Drive)
# cat /sys/block/sda/device/model
WDC WD1002FAEX-0

Ёмкость винчестера в гигабайтах
# echo $[$(cat /sys/block/sda/size)/2/1024/1024]Gb
931Gb

Время наработки винчестера
в часах
# smartctl -a /dev/sda|grep '^  9'
  9 Power_On_Hours          0x0032   059   059   000    Old_age   Always       -       29946

в годах
# bc -l
29946/24/365
3.41849315068493150684

Состояние винчестера
# smartctl -a /dev/sda|grep '^  3\|^  5\|^  7\|^ 10\|^196\|^197\|^198'
  3 Spin_Up_Time            0x0027   174   170   021    Pre-fail  Always       -       4291
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
 10 Spin_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
3 - время раскрутки дисков; растёт при износе подшипников
5 - количество релоцированных секторов (подмена физически битого сектора, сектором из резерва; больше - хуже; идеально - в нуле)
7 - частота ошибок при позиционировании головок
10 - число повторных попыток раскрутки дисков (причина появления: либо питание, либо механика)
196 -  число попыток переноса информации с переназначенных секторов в резервную область
197 - число секторов, являющихся кандидатами на замену; при повторных ошибках чтения, сектор релоцируется: при отсутствии ошибок чтения, сектор исключается из кандидатов на замену
198 - число секторов, при чтении которых возникают неисправимые (внутренними средствами) ошибки; (причина: серьезные дефекты поверхности или проблемы с механикой накопителя)

Температура винчестера
# hddtemp /dev/sdb
ВНИМАНИЕ: Диск /dev/sdb не включен в базу данных поддерживаемых приводов.
ВНИМАНИЕ: Но с использованием распространенных параметров он что-то выдает.
ВНИМАНИЕ: Заметьте, что показанная температура может таковой не являться.
ВНИМАНИЕ: См. опции --help, --debug и --drivebase.
ВНИМАНИЕ: И не забудьте, что можно добавить привод в hddtemp.db
/dev/sdb: WDC WD5000LPCX-24C6HT0                  �:  35°C или °F
# smartctl -A /dev/sdb | grep Temperature
194 Temperature_Celsius     0x0022   108   099   000    Old_age   Always       -       35


Датчики температуры:
Процессор - GPU nVidia - HDD

# inxi -sxD
Drives:    HDD Total Size: 1000.2GB (73.2% used)
           ID-1: /dev/sda model: WDC_WD1002FAEX size: 1000.2GB temp: 28C
Sensors:   System Temperatures: cpu: 38.0C mobo: N/A gpu: 1.0:28C
           Fan Speeds (in rpm): cpu: N/A

Примечание:
Температура винчестера отобразится при условии, если HDD добавлен в базу. Например:
# tail -n 1 /usr/share/misc/hddtemp.db
"WDC WD1002FAEX-00Z3A0"         194  C  "Western Digital Caviar Black, 1,00 TB, SATA 2.6"
194 - ID smart-атрибута
С - Celsius
Остальное также из `smartctl -x /dev/sdX`

А также при условии, что команда выполняется от root.
Теоретически, возможно выполнение пользователем через sudo с NOPASSWD (что потенциально опасно):
# inxi --help | sed -n '77p; 81,82p'
-x     Adds the following extra data (only works with verbose or line output, not short form):
         -D  Hdd temp with disk data if you have hddtemp installed, if you are root OR if you have added to
             /etc/sudoers (sudo v. 1.7 or newer) Example: <username> ALL = NOPASSWD: /usr/sbin/hddtemp


Информация по питанию ноутбука
$ acpi -bia
Battery 0: Full, 100%
Battery 0: design capacity 1773 mAh, last full capacity 1699 mAh = 95%
Adapter 0: on-line
$ inxi -B
Battery:   ID-1: BAT0 charge: 27.3 Wh condition: 27.3/28.5 Wh (96%)

Также её можно получить командой
$ grep . /sys/class/power_supply/*/uevent

Также см.:
cycle_count might be zero all the time for some Linux drivers
https://github.com/svartalf/rust-battery/issues/23
« Последнее редактирование: 21.07.2023 12:27:18 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Защита файлов от удаления/изменения

Допустим вам нужно, чтобы по команде
# apt-get autoclean

старые версии флэша из кеша не удалялись
# ls -l /var/cache/apt/archives/mozilla-plugin-adobe-flash*
-rw-r--r-- 1 root rpm 5138877 ноя 26  2014 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.424-alt36_i586.rpm
-rw-r--r-- 1 root rpm 5139735 дек 10  2014 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.425-alt37_i586.rpm
-rw-r--r-- 1 root rpm 5141844 фев  6  2015 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.442-alt41_i586.rpm
-rw-r--r-- 1 root rpm 5143653 мар 13 15:59 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.451-alt42_i586.rpm
-rw-r--r-- 1 root rpm 5147745 июл 13 15:13 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.481-alt49_i586.rpm
-rw-r--r-- 1 root rpm 5157218 авг 12 14:29 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.508-alt52_i586.rpm

На всех файлах стоит только атрибут extent format
# lsattr /var/cache/apt/archives/mozilla-plugin-adobe-flash*
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.424-alt36_i586.rpm
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.425-alt37_i586.rpm
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.442-alt41_i586.rpm
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.451-alt42_i586.rpm
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.481-alt49_i586.rpm
-------------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.508-alt52_i586.rpm

Установим для файлов, которые не нужно удалять, атрибут immutable
# chattr +i /var/cache/apt/archives/mozilla-plugin-adobe-flash*

Атрибут immutable установлен
# lsattr /var/cache/apt/archives/mozilla-plugin-adobe-flash*
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.424-alt36_i586.rpm
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.425-alt37_i586.rpm
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.442-alt41_i586.rpm
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.451-alt42_i586.rpm
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.481-alt49_i586.rpm
----i--------e-- /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.508-alt52_i586.rpm

Очищаем кеш пакетов
# apt-get autoclean
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Del mozilla-plugin-adobe-flash 3:11.2.202.424-alt36 [5139kB]
Del mozilla-plugin-adobe-flash 3:11.2.202.481-alt49 [5148kB]
Del mozilla-plugin-adobe-flash 3:11.2.202.451-alt42 [5144kB]
Del mozilla-plugin-adobe-flash 3:11.2.202.442-alt41 [5142kB]
Del mozilla-plugin-adobe-flash 3:11.2.202.425-alt37 [5140kB]

При установленном атрибуте immutable, даже root не может удалить эти файлы
# ls -l /var/cache/apt/archives/mozilla-plugin-adobe-flash*
-rw-r--r-- 1 root rpm 5138877 ноя 26  2014 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.424-alt36_i586.rpm
-rw-r--r-- 1 root rpm 5139735 дек 10  2014 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.425-alt37_i586.rpm
-rw-r--r-- 1 root rpm 5141844 фев  6  2015 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.442-alt41_i586.rpm
-rw-r--r-- 1 root rpm 5143653 мар 13 15:59 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.451-alt42_i586.rpm
-rw-r--r-- 1 root rpm 5147745 июл 13 15:13 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.481-alt49_i586.rpm
-rw-r--r-- 1 root rpm 5157218 авг 12 14:29 /var/cache/apt/archives/mozilla-plugin-adobe-flash_3%3a11.2.202.508-alt52_i586.rpm
а значит пакеты останутся в сохранности.

Команды chattr и lsattr с опцией -R могут выполняться рекурсивно.
Снять  атрибут immutable можно командой
# chattr -i цель

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Замедление манипулятора мышь
на примере мыши A4Tech USB Mouse

Установить пакет:
# apt-get update
# apt-get install xinput

Теперь посмотрим все имеющиеся устройства ввода:
$ xinput --list --short
⎡ Virtual core pointer                    id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              id=4 [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad              id=10 [slave  pointer  (2)]
⎜   ↳ A4Tech USB Mouse                        id=12 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                            id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Sleep Button                            id=8 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            id=9 [slave  keyboard (3)]
    ↳ HP WMI hotkeys                          id=11 [slave  keyboard (3)]

Здесь наша мышь называется A4Tech USB Mouse и она идёт под идентификатором 12:
⎜   ↳ A4Tech USB Mouse                        id=12 [slave  pointer  (2)]

Посмотрим настройки мыши - последний параметр в команде, это идентификатор устройства:
$ xinput list-props 12
Device 'A4Tech USB Mouse':
Device Enabled (149): 1
Coordinate Transformation Matrix (151): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (272): 0
Device Accel Constant Deceleration (273): 1.000000
Device Accel Adaptive Deceleration (274): 1.000000
Device Accel Velocity Scaling (275): 10.000000
Device Product ID (267): 2522, 10
Device Node (268): "/dev/input/event8"
Evdev Axis Inversion (549): 0, 0
Evdev Axes Swap (551): 0
Axis Labels (552): "Rel X" (159), "Rel Y" (160), "Rel Horiz Wheel" (546), "Rel Vert Wheel" (547), "Rel Misc" (548)
Button Labels (553): "Button Left" (152), "Button Middle" (153), "Button Right" (154), "Button Wheel Up" (155), "Button Wheel Down" (156), "Button Horiz Wheel Left" (157), "Button Horiz Wheel Right" (158), "Button Side" (541), "Button Extra" (542), "Button Forward" (543), "Button Back" (544), "Button Task" (545), "Button Unknown" (540), "Button Unknown" (540), "Button Unknown" (540), "Button Unknown" (540)
Evdev Middle Button Emulation (554): 0
Evdev Middle Button Timeout (555): 50
Evdev Third Button Emulation (556): 0
Evdev Third Button Emulation Timeout (557): 1000
Evdev Third Button Emulation Button (558): 3
Evdev Third Button Emulation Threshold (559): 20
Evdev Wheel Emulation (560): 0
Evdev Wheel Emulation Axes (561): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (562): 10
Evdev Wheel Emulation Timeout (563): 200
Evdev Wheel Emulation Button (564): 4
Evdev Drag Lock Buttons (565): 0

Эти команды совершенно аналогичны предыдущей команде:
$ xinput --list-props 12
$ xinput --list-props "A4Tech USB Mouse"

В этом выводе нас интересует текущее значение, - оно равно единице:
$ xinput list-props 12|grep 'Device Accel Constant Deceleration'
Device Accel Constant Deceleration (273): 1.000000

Теперь немного замедлим мышь (формат команды: устройство свойство значение):
$ xinput --set-prop "A4Tech USB Mouse" "Device Accel Constant Deceleration" 1.5

и посмотрим его для нашего устройства с идентификатором 12:
$ xinput list-props 12|grep 'Device Accel Constant Deceleration'
Device Accel Constant Deceleration (273): 1.500000

Теперь пропишем эту настройку в автостарт, чтобы после подключения мыши настройка применялась при каждом логине в сессию XFCE.
Для этого вызовем из меню XFCE:
Меню - Настройки - Сеансы и запуск

Переключимся на вкладку Автозапуск и нажмём на кнопку Добавить
В появившемся окне Добавление приложения, в строке Имя, пишем название под которым будет отображаться настройка.
В строке Команда, пишем команду для своей мыши:
xinput --set-prop "A4Tech USB Mouse" "Device Accel Constant Deceleration" 1.5

Файл настройки будет лежать в
$ grep -rHi 'A4Tech USB Mouse' $HOME/.config/
/home/user/.config/autostart/Настройка скорости мыши (xinput).desktop:Exec=xinput --set-prop "A4Tech USB Mouse" "Device Accel Constant Deceleration" 1.5

Если мышь отлючить от usb-порта и снова подключить, настройки мыши сбросятся в дефлолт.
Чтобы восстановить нужные нам настройки, нужно будет после подключения мыши выполнить команду снова или перелогиниться в Х-сессию, чтобы выполнилась команда в автостарте.

Локальные настройки автостарта выполняемого при входе в Х-сессию лежат в этом каталоге:
$HOME/.config/autostart/

глобальные лежат здесь:
/etc/xdg/autostart/

В этих каталогах лежат файлы *.desktop


Пример файла глобальной настройки замедления мыши
/etc/X11/xorg.conf.d/20-mouse-deceleration.conf
Section "InputClass"
    Identifier "A4Tech USB Mouse"
    MatchIsPointer "yes"
    Option "AdaptiveDeceleration" "1"
    Option "ConstantDeceleration" "1.5"
    Option "AccelerationProfile" "-1"
EndSection

Файл можно создать командой
$ su -
# touch /etc/X11/xorg.conf.d/20-mouse-deceleration.conf

Затем вызвать на редактирование
# mcedit  /etc/X11/xorg.conf.d/20-mouse-deceleration.conf

Потом вставить текст, сохранить, разлогиниться и рестартануть Х-сервер или перегрузиться.
Помните, - файл должен заканчиваться пустой строкой.

Опция
Option "ConstantDeceleration" "1.5"
указывает степень замедления курсора мыши:
больше значение - больше замедление.
Дефолтное значение можно посмотреть командой выше.
Для замедления курсора мыши, указываемое значение должно быть больше дефолтного.
В примере, для используемой мыши, дефолтное значение ConstantDeceleration равно 1.0 (см. вывод xinput выше)


Документация:
http://www.x.org/wiki/Development/Documentation/PointerAcceleration/
https://wiki.archlinux.org/index.php/Mouse_acceleration
« Последнее редактирование: 03.09.2015 02:53:25 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Контроль выполнения заданий cron

Разберём на примере rkhunter.
rkhunter это ежедневно выпоняемое задание
# find /etc/cron* -name "*rkhunt*"
/etc/cron.daily/01-rkhunter

и в списке ежедневных заданий
# ls -1 /etc/cron.daily/
01-rkhunter
chkrootkit
logrotate
stmpclean
(задания выполняются, если исполняемый)

выпоняться будет в 04:02 утра
# grep daily /etc/crontab
02 4 * * * root run-parts /etc/cron.daily

rkhunter оставляет после себя log-файл
# head -n 5 /var/log/rkhunter.log
[04:02:13] Running Rootkit Hunter version 1.3.4 on host
[04:02:13]
[04:02:13] Info: Start date is Mon Sep 14 04:02:13 MSK 2015
[04:02:13]
[04:02:13] Checking configuration file and command-line options...


Но как узнать, выполнялось ли задание cron и когда, если утилита не оставляет после себя логов?

На примере списка ежедневных заданий
# ls -1 /etc/cron.daily/
01-rkhunter
chkrootkit
logrotate
stmpclean

Эта команда в седьмом поле вывода покажет время доступа к исполняемому файлу который используется в ежедневном задании:
# ls -lu --time-style=full-iso $(which {logrotate,stmpclean,rkhunter,chkrootkit})
-rwxr-x--- 1 root root 351761 2015-09-14 04:02:02.198343861 +0300 /usr/bin/rkhunter
-rwxr-xr-x 1 root root  76493 2015-09-14 04:07:20.883924138 +0300 /usr/sbin/chkrootkit
-rwxr-xr-x 1 root root  50976 2015-09-14 04:09:18.184505800 +0300 /usr/sbin/logrotate
-rwxr-xr-x 1 root root  13820 2015-09-14 04:09:18.796508835 +0300 /usr/sbin/stmpclean
Задания выполнялись именно в таком порядке как показано в выводе команды ls.
В фигурных скобках перечислены утилиты используемые в ежедневных заданиях.
Эту команду необходимо подавать от root, поскольку переменная PATH пользователя не содержит sbin.

Сокращённый вывод:
# ls -lu $(which {logrotate,stmpclean,rkhunter,chkrootkit})
-rwxr-x--- 1 root root 351761 сен 14 04:02 /usr/bin/rkhunter
-rwxr-xr-x 1 root root  76493 сен 14 04:07 /usr/sbin/chkrootkit
-rwxr-xr-x 1 root root  50976 сен 14 04:09 /usr/sbin/logrotate
-rwxr-xr-x 1 root root  13820 сен 14 04:09 /usr/sbin/stmpclean

Если эта команда будет использоваться достаточно часто, ей можно задать алиас, например с именем llu.
« Последнее редактирование: 14.09.2015 18:52:36 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Как очистить свободное от файлов пространство
на локальных файловых системах
чтобы снятием дампа удалённую информацию нельзя было извлечь

Монтируем нашу флешку, которую будем очищать,
$ udisksctl mount -b /dev/sdb1
Mounted /dev/sdb1 at /media/1A7CAF9D19C4CBD9.

на которой имеется файл
$ ls /media/1A7CAF9D19C4CBD9/
DOWNLOAD-spaces.ru.swf

Создаём пустой файл
$ touch /media/1A7CAF9D19C4CBD9/zero.txt

и забиваем его нулями до размера свободного пространтства
$ dd if=/dev/zero of=/media/1A7CAF9D19C4CBD9/zero.txt bs=10M
dd: ошибка записи «/media/1A7CAF9D19C4CBD9/zero.txt»: На устройстве не осталось свободного места
188+0 записей получено
187+0 записей отправлено
 скопировано 1962389504 байта (2,0 GB), 301,737 c, 6,5 MB/c

Затем удаляем этот файл
$ rm -f /media/1A7CAF9D19C4CBD9/zero.txt

Можно проверить.
Снимаем дамп произвольного участка свободного пространства
# dd if=/dev/sdb1 of=/root/1.txt ibs=1M skip=100 count=1
1+0 записей получено
2048+0 записей отправлено
 скопировано 1048576 байт (1,0 MB), 0,14262 c, 7,4 MB/c

и видим, что hex-код весь нулевой, правая ascii-колонка пуста,
# less -r /root/1.txt
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00100000
/root/1.txt lines 1-3/3 (END)

а нужный файл сохранился
$ ls /media/1A7CAF9D19C4CBD9/
DOWNLOAD-spaces.ru.swf

Потом демонтируем флешку
$ udisksctl unmount -b /dev/sdb1
Unmounted /dev/sdb1.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Куда на диск флэш-плагин сохраняет сэйвы (saves)?

Поиск сохранений:
$ find ~ -name "*.sol*"
Расширение сохранений - файлы *.sol


Путь к файлу сохранения индивидуален для каждого плагина/браузера:

PepperFlash (каталог .config/opera-developer; Opera-developer браузер; полный путь к файлу сохранения):
/home/yourlogin/.config/opera-developer/Pepper Data/Shockwave Flash/WritableRoot/#SharedObjects/A1AAA1AA/a-v2.sndcdn.com/assets/swf/flashAudio-ccac65.swf/AudioManager.rtmpfallback.sol
Признак сетевого открытия swf - часть пути, в полном пути к файлу сохранения *.sol:
a-v2.sndcdn.com/assets/swf/flashAudio-ccac65.swf

PepperFlash (каталог .config/chromium; Chromium браузер)
/home/yourlogin/.config/chromium/Default/Pepper Data/Shockwave Flash/WritableRoot/#SharedObjects/BBB2BBBB/stream.1tv.ru/player.swf/1tvPlayer.sol
Признак сетевого открытия swf:
stream.1tv.ru/player.swf

freshplayerplugin (18.0; каталог .config/freshwrapper-data; Pale Moon браузер)
/home/yourlogin/.config/freshwrapper-data/Shockwave Flash/WritableRoot/#SharedObjects/CC3CC3C3/localhost/yourlogin/Downloads/masjanja/Sim-Cit-spaces.ru.swf/Save1.sol
/home/yourlogin/.config/freshwrapper-data/Shockwave Flash/WritableRoot/#SharedObjects/HQ3YK8D3/flashigry-swf.com/iswf/truck-mania-2.swf/tank.sol
Сохранение локально запущенногого swf - первая строка выше:
localhost/yourlogin/Downloads/masjanja/Sim-Cit-spaces.ru.swf
Сохранение swf запущенного с ресурса - вторая строка выше:
flashigry-swf.com/iswf/truck-mania-2.swf

mozilla-plugin-adobe-flash (11.2; каталог .macromedia; Pale Moon браузер)
/home/yourlogin/.macromedia/Flash_Player/#SharedObjects/4DDDDDDD/localhost/yourlogin/Downloads/masjanja/Sim-Cit-spaces.ru.swf/Save1.sol
Сохранение локально запущенногого swf:
localhost/yourlogin/Downloads/masjanja/Sim-Cit-spaces.ru.swf
Save1.sol - номер ячейки сохранения в игре. Количество номеров сэйвов, зависит от количества ячеек для сохранения, в секции Сохранить игры.
« Последнее редактирование: 06.11.2015 23:05:13 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Браузеры Firefox и Pale Moon не восстанавливают сессию
игнорируя файл sessionstore.js

Решение:
Bug 668359 - sessionstore.js is ignored (FIX inside!)

Закрыть Firefox или Pale Moon.
Восстановить файл sessionstore.js
cd  ~/.moonchild\ productions/pale\ moon/12x3c4.имяпрофиля/
cp ./sessionstore.bak ./sessionstore.js

Открыть в текстовом редакторе файл sessionstore.js
Если файл начинается так
{"windows":[],"selectedWindow":0,"_closedWindows":[{"tabs":[{"entries":[{"url":"https://

удалить
],"selectedWindow":0,"_closedWindows":[

чтобы получить
{"windows":[{"tabs":[{"entries":[{"url":"https://

Запустить браузер, вкладки восстановятся.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
"Ноутбучный" скрипт терминального сетевого монитора nload
для беспроводного интерфейса wifi

Целевое назначение скрипта:

Скрипт парсит имя беспроводного сетевого интерфейса для команды
$ nload -u K имя_интерфейса

Причина появления скрипта:

Например ноутбук имеющий и проводной и беспроводной интерфейсы,
$ lspci -k|grep -A2 'Net\|Eth'
02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)
Subsystem: Hewlett-Packard Company nc6120/nx8220/nw8240
Kernel driver in use: ipw2200
--
02:0e.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)
Subsystem: Hewlett-Packard Company NX6110/NC6120
Kernel driver in use: b44

в редких непредсказуемых случаях, при засыпании в память, может уйти в спячку с беспроводным интерфейсом имеющим одно имя
Nov 25 22:14:21 host NetworkManager[978]: <info> (eth1): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]
Nov 25 22:14:21 host NetworkManager[978]: <info> (eth1): deactivating device (reason 'sleeping') [37]
Nov 25 22:14:21 host NetworkManager[978]: <info> (eth1): cleaning up...
Nov 25 22:14:21 host NetworkManager[978]: <info> (eth1): taking down device.

а выйти из спячки, с беспроводным интерфейсом имеющим уже другое имя
Nov 26 00:44:02 host-nx NetworkManager[980]: <info> (eth0): new 802.11 WiFi device (driver: 'ipw2200' ifindex: 2)
...
Nov 26 00:44:05 host-nx NetworkManager[980]: <info> Activation (eth0) successful, device activated.

из-за чего сетевые мониторы "потеряют" указанный в их конфигурации сетевой интерфейс, не давая возможности контролировать трафик по интерфейсу.


Листинг скрипта (однострочная команда)
$ nload -u K $(grep -rH DRIVER /sys/class/net/eth*/device/ 2>/dev/null | \
grep $( lspci -k|grep -A2 Netw|tail -n 1 | sed 's/ //g'|cut -f2 -d : ) | cut -f5 -d / )


Как это работает?

Первая команда ищет зарегистрированные в системе сетевые интерфейсы и имя драйвера для каждого из них
$ grep -rH DRIVER /sys/class/net/eth*/device/ 2>/dev/null
/sys/class/net/eth0/device/uevent:DRIVER=ipw2200
/sys/class/net/eth1/device/uevent:DRIVER=b44

Эта команда, парсит имя драйвера беспроводного интерфейса
$ lspci -k|grep -A2 Netw|tail -n 1 | sed 's/ //g'|cut -f2 -d :
ipw2200

которое служит объектом поиска для grep
$ grep -rH DRIVER /sys/class/net/eth*/device/ 2>/dev/null | \
> grep $( lspci -k|grep -A2 Netw|tail -n 1 | sed 's/ //g'|cut -f2 -d : )
/sys/class/net/eth0/device/uevent:DRIVER=ipw2200

В завершение всего, команда
cut -f5 -d /

парсит имя беспроводного сетевого интерфейса в строке вывода выше
$ grep -rH DRIVER /sys/class/net/eth*/device/ 2>/dev/null | \
> grep $( lspci -k|grep -A2 Netw|tail -n 1 | sed 's/ //g'|cut -f2 -d : ) | cut -f5 -d /
eth0

которое и служит параметром, в виде имени интерфейса, для nload.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Как узнать
поддерживает ли процессор инструкции 64 bit
(Long Mode)

Например для Pentium M:
$ grep 'cpu family\|^model' /proc/cpuinfo
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.73GHz

Вывод этих команд сообщит, поддерживает ли ваш процессор инструкции 64 bit:
$ grep -q "^flags.*\blm\b" /proc/cpuinfo && echo "x86_64 supported" || echo "not x86_64"
not x86_64
$ grep -qw lm /proc/cpuinfo && echo "x86_64 supported" || echo "not x86_64"
not x86_64
$ lscpu | grep 'Architecture\|CPU op-mode(s)\|Model name'
Architecture:          i686
CPU op-mode(s):        32-bit
Model name:            Intel(R) Pentium(R) M processor 1.73GHz
$ echo; echo 'Support 64-bit mode:' && grep -qw lm /proc/cpuinfo && echo "Yes" || echo "No"; echo

Support 64-bit mode:
No

Что говорит о том, что использовать с Pentium M сборки iso-образов x86_64 бессысленно.

Скрипт с выбросом результата, - выводит модель процессора и сообщает, поддерживает ли процессор операционный режим 64-bit:
echo; cat /proc/cpuinfo | \
awk '/model name/ {print $4,$5,$6}'\
  && grep -qw lm /proc/cpuinfo && \
echo "support 64-bit op-mode" || \
echo "does not support 64-bit op-mode"; echo

Intel(R) Pentium(R) M
does not support 64-bit op-mode


Проще говоря, отсутствие/наличие флага lm в /proc/cpuinfo, говорит о том, что процессор не поддерживает или поддерживает инструкции 64 bit.

Команды lscpu и awk относятся к пакетам:
$ rpm -qf $(which lscpu)
util-linux-2.27.1-alt2
$ rpm -qf $(which awk)
gawk-4.1.0-alt2
« Последнее редактирование: 09.01.2016 13:16:40 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Как сделать скриншот виртуального терминала?

Навеяно DOS'овскими скрин-грабберами
Screen Thief, Snarf, Foto и множеством других

Для снятия скриншота выбранного виртуального терминала, есть замечательная утилита fbgrab.
Применение предельно простое:
# fbgrab -c 4 -s 3 -z 9 -v ~/tmp/sshot.png
-c - номер виртуального терминала
-s - ожидание в секундах перед снятием скриншота
-z - степень компрессии
-v - verbose, увеличить вывод подробностей

Опции -s -z -v необязательны.
Подробнее об использовании в help и man.

fbgrab выполняется только от root:
$ fbgrab -c 4 -z 9 sshot.png
Couldn't open /dev/console
$ ll /dev/console
crw------- 1 root root 5, 1 янв 17 23:48 /dev/console

Программу можно использовать например, для подготовки презентации сугубо консольных программ, отчёта об ошибках или снятия скриншота 12-го терминала.

Просмотр скриншотов в консоли, любой из двух программ (см. help и man для подробностей):
$ apt-cache search ^|grep '^fbi\|^fbv'
fbi - Image viewer for Linux framebuffer console
fbv - Framebuffer image viewer


Как снять "скриншот" 12-го терминала в текстовом формате?

Нет ничего проще:
man vcs

Снять содержимое 2-го виртуального терминала в файл в текстовом формате без символов перевода строки LF (0Ah):
(Просмотр текста только из виртуального терминала)
# cat /dev/vcs2 > vcs2.txt

Снять содержимое 12-го виртуального терминала в файл в текстовом формате с символами перевода строки LF (0Ah):
# fold -w 128 /dev/vcs12 > vcs12.txt
где
-w -- количество символов в строке виртуального терминала; вставить символ перевода строки через каждые 128 символов текста,

Значение для -w определяется так:

Разрешение виртуального терминала - смотреть по X
# fbset -i | grep '^mode\|geom'
mode "1024x768"
    geometry 1024 768 1024 768 32

Используемый фонт в виртуальном терминале
(здесь количество пикселов по X на матрицу символа - 8, - один байт)
# grep -rH SYSFONT /etc/sysconfig/
/etc/sysconfig/consolefont:SYSFONT=UniCyr_8x16

Делим разрешение виртуального терминала по X на ширину в пикселах матрицы символа виртуального терминала
# echo $((1024/8))
128
и получаем количество символов в строке виртуального терминала, т.е. параметр для -w

Или для фреймбуфера 1366x768, это 48 строк и 170 колонок символов
$ stty -a | head -n 1 | cut -d ' ' -f 4-7
rows 48; columns 170;

Но  помните, что этот размер не фиксированный. Он зависит от размера матрицы символа.

В принципе, для определения -w таким способом, чтобы распарсить это значение, можно написать простенький скрипт, который будет выводить количество символов в строке виртуально терминала.


Более простой способ определения количества символов в строке виртуального терминала:

Запустить в виртуальном терминале mcedit и набить любые символы в строке до конца строки без смещения отображения строки.
Редактор mcedit, начинает счёт позиции курсора в строке с нуля.
В пределах окна mcedit, при разрешении виртуального терминала по X 1024 пиксела, последняя позиция курсора - 127-й символ в строке. Значит значение для -w в fold будет в этом случае равно 127+1 (счёт позиции символа с нуля!).

Но у этого варианта снятия "скриншота" в текстовом формате есть недостаток:
кириллические символы не отображаются.
(первые четыре строки редактора mcedit в виртуальном терминале):
                   [-M--]  0 L:[  1+ 6   7/ 12] *(400 / 618b) 1083 0x43B                                                  [*][X]
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
zxzxzz<EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7>
<EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7><EF><E7>                       
Например символ:
Dec Hex Sym
239 EF  я
« Последнее редактирование: 25.05.2018 18:29:40 от Speccyfighter »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
man fbgrab
Цитировать
NAME
       fbgrab - takes screenshots using the framebuffer device

SYNOPSIS
       fbgrab [options] filename

DESCRIPTION
       fbgrab  reads  the  framebuffer device (/dev/fb*) or a dump thereof and
       saves a PNG image file. You can use it for  making  screenshots  of  of
       virtually  any  application, from traditional test applications to your
       X-windows desktop, as well as framebuffer applications.


Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Для X-в можно в командной строке использовать import

import pimer.png
« Последнее редактирование: 19.01.2016 20:00:06 от ruslandh »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Downgrade текущего Sisyphus-ядра (будущий p8) на ядро из p7/branch  в системе на Сизиф
(Переезд в системе на Сизиф с 4-го ядра на ядро 3.x.y из p7/branch)

Имеем установленную систему на базе текущего (pre-p8) Сизифа
# cat /etc/altlinux-release
ALT Linux Sisyphus (unstable)

с ядром
# uname -r
4.1.15-std-def-alt2

и KMS-драйвером
$ lspci -k | grep -A2 VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
Subsystem: Hewlett-Packard Company NX6110/NC6120
Kernel driver in use: i915

Удаляем все цели на репозиторий Сизиф
# apt-repo rm all

Добавляем в файл /etc/apt/sources.list цели на репозиторий p7/branch
# grep -v '\#' /etc/apt/sources.list

rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch i586 classic
rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch noarch classic

Обновляем локальную базу пакетов
# apt-get update
Получено: 1 http://ftp.altlinux.org i586 release [896B]
Получено: 2 http://ftp.altlinux.org noarch release [690B]
Получено 1586B за 0s (4439B/s).
Получено: 1 http://ftp.altlinux.org i586/classic pkglist [16,4MB]
Получено: 2 http://ftp.altlinux.org i586/classic release [133B]                                               
Получено: 3 http://ftp.altlinux.org noarch/classic pkglist [3513kB]                                           
Получено: 4 http://ftp.altlinux.org noarch/classic release [135B]                                             
Получено 19,9MB за 2m30s (132kB/s).                                                                           
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

Выясняем полное имя пакета ядра на которое мы хотим переехать с понижением ветки ядра - c ядра 4.x.y на ядро 3.x.y
# apt-cache show kernel-image-std-def
Виртуальный пакет kernel-image-std-def предоставляется следующими пакетами:
  kernel-image-std-def#1:4.1.15-alt2 1:4.1.15-alt2
  kernel-image-std-def#1:3.14.58-alt0.M70P.1 1:3.14.58-alt0.M70P.1
You should explicitly select one to show.
E: Package kernel-image-std-def is a virtual package with multiple providers.

Полное имя пакета ядра
kernel-image-std-def#1:3.14.58-alt0.M70P.1

Смотрим, какими опциями мы можем воспользоваться при даунгрэйде ветки ядра
# update-kernel --help
Usage: update-kernel [options]
Valid options are:
-a, --all         install all kernel modules
-i, --interactive interactive modules install
-f, --force       force kernel upgrade
-t, --type        install kernel with specified flavour (ovz-smp, std-def, etc)
-r, --release     install kernel with specified release (alt10, alt22, etc)
-n, --dry-run     download packages, but don't install (--download-only)
-h, --help        show this text and exit

Выполняем команду, которая установит последнее ядро std-def в систему на Сизифе
# update-kernel -t std-def -r 1:3.14.58-alt0.M70P.1 -f
Running kernel version: kernel-image-std-def-1:4.1.15-alt2
Checking for available kernel packages...
Try to install new kernel kernel-image-std-def-1:3.14.58-alt0.M70P.1 and update its modules [y]/n? yes
update-kernel: kernel-modules-bcmwl is installed, trying to update...
update-kernel: kernel-modules-drm is installed, trying to update...
update-kernel: kernel-modules-drm-nouveau is installed, trying to update...
update-kernel: kernel-modules-drm-radeon is installed, trying to update...
update-kernel: kernel-modules-staging is installed, trying to update...
update-kernel: kernel-modules-v4l is installed, trying to update...
update-kernel: kernel-modules-virtualbox-addition is installed, trying to update...
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано kernel-modules-bcmwl-std-def#6.30.223.248-alt5.200250.0.M70P.1 для 'kernel-modules-bcmwl-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-drm-std-def#1:3.14.58-alt0.M70P.1 для 'kernel-modules-drm-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-drm-nouveau-std-def#1:3.14.58-alt0.M70P.1 для 'kernel-modules-drm-nouveau-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-drm-radeon-std-def#1:3.14.58-alt0.M70P.1 для 'kernel-modules-drm-radeon-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-staging-std-def#1:3.14.58-alt0.M70P.1 для 'kernel-modules-staging-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-v4l-std-def#1:3.14.58-alt0.M70P.1 для 'kernel-modules-v4l-3.14.58-std-def-alt0.M70P.1'
Выбрано kernel-modules-virtualbox-addition-std-def#4.3.26-alt1.200250.0.M70P.1 для 'kernel-modules-virtualbox-addition-3.14.58-std-def-alt0.M70P.1'
Следующие НОВЫЕ пакеты будут установлены:
  kernel-image-std-def#1:3.14.58-alt0.M70P.1 kernel-modules-bcmwl-std-def#6.30.223.248-alt5.200250.0.M70P.1
  kernel-modules-drm-nouveau-std-def#1:3.14.58-alt0.M70P.1
  kernel-modules-drm-radeon-std-def#1:3.14.58-alt0.M70P.1 kernel-modules-drm-std-def#1:3.14.58-alt0.M70P.1
  kernel-modules-staging-std-def#1:3.14.58-alt0.M70P.1 kernel-modules-v4l-std-def#1:3.14.58-alt0.M70P.1
  kernel-modules-virtualbox-addition-std-def#4.3.26-alt1.200250.0.M70P.1
0 будет обновлено, 8 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 37,3MB архивов.
После распаковки потребуется дополнительно 134MB дискового пространства.
...

После завершения установки ядра, убираем все цели на репозиторий p7/branch
# sed -i 's/^rpm/\#rpm/g' /etc/apt/sources.list

Возвращаем цели на репозиторий Сизиф
# apt-repo add Sisyphus

Обновляем локальную базу пакетов
# apt-get update

Перегружаем систему
# reboot

После перезагрузки получаем
$ cat /etc/altlinux-release
ALT Linux Sisyphus (unstable)
$ uname -r
3.14.58-std-def-alt0.M70P.1

В принципе, то же самое, можно проделать и имея на руках инсталляционный стартеркит, - например стартеркит с TDE. Стартеркиты довольно часто обновляются, поэтому при даунгрейд, вы получите последнее или предпоследнее ядро предыдущей ветки ядра.


Даунгрейд ветки ядра был проведён в связи с этой проблемой:
https://forum.altlinux.org/index.php?topic=36192.msg276260#msg276260
https://forum.altlinux.org/index.php?topic=36177.msg283014#msg283014
« Последнее редактирование: 24.07.2016 17:47:24 от Speccyfighter »

Оффлайн Rjkz

  • Начинающий
  • *
  • Сообщений: 1
Всё ниженаписанное актуально для bash.

   Переменная CDPATH
   
   Указывает команде cd где искать директорию, если её нет в текущем
   каталоге.
   Пример:
   $CDPATH=.:/home/user/:/home/user/software
   $cd docs
   

   Bash поймёт так:
   Если в текущей директории нет поддиректории docs, попытаться
   перейти в /home/user/docs, если же её нет и там, то в
   /home/user/software/docs.

   Функции
   
   В bash есть функции, массивы и ассоциативные массивы. Последние
   нужны для написания скриптов, а вот функции можно удобно
   использовать и в повседневной работе, запихивая в них длинные
   команды и их последовательности "на лету".

   Нижеприведённую функцию можно набрать прямо в командной строке.
   $найди(){ find ~ -maxdepth 1 -name $1; }
   
   и использовать её, покуда жив текущий bash:

   
   $найди picture.jpg
   

   Посмотреть, какие функции определены можно простым grep.

   $set |grep "^.* ()"
   ну, или как-то так.
   
   Посмотреть текст функции можно
   $функ(){ set | sed -n "/^$1/,/^}/p"; }
   $функ найди
   Определённые в окружении функции можно выгрузить в файл
      $set | sed -n '/^.* ()/,$ p' > filename
   
   который перед использованием в другом shell подгрузить командой
   $. filename
   
   или
   $source filename

   Если функции в файле грамотно комментировать, можно без проблем
   написать вывод справки по функциям и список функций. (прим. bash не
   загружает коментарии в своё окружение).
   
   Я использую один файл со множеством функций на всех своих компах.
   Кстати, русский язык в названии - спорно, но - это гарантия, что
   имя функции уникально в системе.

Иногда появляется желание отправить друзьям какой-либо фрагмент фильмы. Изучал опции ffmpeg раз 5, когда редко пользуешься - забываешь, потом достало и написал следующее:
вырежи ()
# Использование
# вырежи [начало фрагмента (09:00)] [длительность(01:00 - одна минута)] [имя файла]
# название фрагмента ep[N]-[имя файла]
{
    if (( "$#" == 3 )); then
        _инкр_дир "ep" "-$3";
        num="$?";
        ffmpeg -i "$3" -ss "$1" -t "$2" -qscale 0 -strict -2 "ep$num-$3";
    else
        ffmpeg -i "$3" -ss "$1" -t "$2" -qscale 0 -strict -2 "$4";
    fi
}

_инкр_дир ()
{
    pre="$1";
    post="$2";
    full="$3";
    m=($(basename -a $(find . -name "$pre*$post" |  sed "s/$pre\(.*\)$post/\1/" ) | sort -g));
    s=${m[ (( "${#m[@]}" - 1 )) ]};
    incs=$(( $s + 1 ));
    return "$incs"
}
Кривовато, но вроде работоспособно.

PS. Функции удобны ещё тем, что по-умолчанию для них работает автодополнение и нет нужды загаживать папки ../bin своими скриптами.
« Последнее редактирование: 27.01.2016 07:27:52 от Rjkz »