Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 56

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

dump, restore

Команда dump создаСт Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ Ρ†Π΅Π»Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… систСм, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… систСмах ΠΈ сСтях[ 41 ]. Она считываСт дисковыС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈ сохраняСт ΠΈΡ… Π² Ρ„Π°ΠΉΠ»Π΅, Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сохранСны Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ носитСлС -- Π½Π° ТСстком дискС ΠΈΠ»ΠΈ ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Π΅. Команда restore -- "Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚" Ρ„Π°ΠΉΠ»Ρ‹, созданныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ dump.

fdformat

ВыполняСт Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ дискСт.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния систСмными рСсурсами

ulimit

УстанавливаСт Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» для систСмных рСсурсов. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ вызываСтся с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -f, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² (ulimit -f 1000 ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ вновь создаваСмых Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠΌ). ΠšΠ»ΡŽΡ‡ -c ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ² coredump (ulimit -c 0 Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ созданиС coredump-Ρ„Π°ΠΉΠ»ΠΎΠ²). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, всС ограничСния ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ /etc/profile ΠΈ/ΠΈΠ»ΠΈ ~/.bash_profile (см. Π“Π»Π°Π²Π° 26).

Π“Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС ulimit ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся исчСрпаниС систСмных рСсурсов, извСстных ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ fork bomb.

#!/bin/bash


while 1 # БСсконСчный Ρ†ΠΈΠΊΠ».

do

$0 & # Π­Ρ‚ΠΎΡ‚ сцСнарий Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сам сСбя . . .

#+ пороТдая Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ процСссы бСсконСчноС число Ρ€Π°Π· . . .

#+ Ρ‚ΠΎΡ‡Π½Π΅Π΅ -- Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ иссякнут систСмныС рСсурсы.

done # Π­Ρ‚ΠΎ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстный сцСнарий "sorcerer's appentice".


exit 0 # Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.


Команда ulimit -Hu XX (Π³Π΄Π΅ XX -- это Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΡ€Π΅Π΄Π΅Π» количСства процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ) Π² /etc/profile Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ этого сцСнария, ΠΊΠΎΠ³Π΄Π° количСство процСссов прСвысит установлСнный ΠΏΡ€Π΅Π΄Π΅Π».

umask

Установка маски Ρ€Π΅ΠΆΠΈΠΌΠ° создания Ρ„Π°ΠΉΠ»ΠΎΠ². НакладываСт ограничСния Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎ-ΡƒΠΌΠ»Ρ‡Π°Π½ΠΈΡŽ для создаваСмых Ρ„Π°ΠΉΠ»ΠΎΠ². Маска прСдставляСт собой Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ опрСдСляСт Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°. НапримСр, umask 022 удаляСт ΠΏΡ€Π°Π²Π° Π½Π° запись для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π²Π°Π²ΡˆΠΈΡ…ΡΡ с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ 777, ΠΎΠ½ оказываСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 755; Π° Ρ€Π΅ΠΆΠΈΠΌ 666 прСобразуСтся Π² 644, Ρ‚.Π΅. 777 NAND 022 = 755, 666 NAND 022 = 644)[ 42 ]. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, впослСдствиС, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа ΠΊ своСму Ρ„Π°ΠΉΠ»Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ chmod. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ umask устанавливаСтся Π² Ρ„Π°ΠΉΠ»Π΅ /etc/profile ΠΈ/ΠΈΠ»ΠΈ ~/.bash_profile (см. Π“Π»Π°Π²Π° 26).

rdev

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ»ΠΈ измСняСт ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ΅ устройство, Ρ€Π°Π·ΠΌΠ΅Ρ€ RAM-диска ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Ρ€Π΅ΠΆΠΈΠΌ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ rdev Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ lilo, Π½ΠΎ rdev ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся вострСбованной, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ установкС элСктронного диска (RAM-диск). Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасная, ΠΏΡ€ΠΈ Π½Π΅ΡƒΠΌΠ΅Π»ΠΎΠΌ использовании, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с модулями ядра

lsmod

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

bash$ lsmod

Module Size Used by

autofs 9456 2 (autoclean)

opl3 11376 0

serial_cs 5456 0 (unused)

sb 34752 0

uart401 6384 0 [sb]

sound 58368 0 [opl3 sb uart401]

soundlow 464 0 [sound]

soundcore 2800 6 [sb sound]

ds 6448 2 [serial_cs]

i82365 22928 2

pcmcia_core 45984 0 [serial_cs ds i82365]


Команда cat /proc/modules Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π° экран эту ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

insmod

ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° модуля ядра (ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ вмСсто insmod ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ modprobe). Π”ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с привилСгиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root.

rmmod

Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра. Π”ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с привилСгиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root.

modprobe

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вызываСтся ΠΈΠ· сцСнариСв Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы. Π”ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с привилСгиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root.

depmod

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ модулями, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вызываСтся ΠΈΠ· сцСнариСв Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы.

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

env

ЗапускаСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ сцСнарий с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния (Π½Π΅ измСняя срСду систСмы Π² Ρ†Π΅Π»ΠΎΠΌ, измСнСния ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ окруТСния запускаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹/сцСнария). ΠŸΠΎΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ [varname=xxx], устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния varname, которая Π±ΡƒΠ΄Π΅Ρ‚ доступна ΠΈΠ· запускаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹/сцСнария. Π‘Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² -- просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния с ΠΈΡ… значСниями.

Π’ Bash, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΡ‚ Bourne shell, имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ установки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΈ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΈΠ»ΠΈ сцСнария) ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой.

var1=value1 var2=value2 commandXXX

# $var1 ΠΈ $var2 -- Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ для 'commandXXX'.


Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС сцСнария ("sha-bang") ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ env, Ссли ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ Π½Π΅ извСстСн.

#! /usr/bin/env perl


print "Π­Ρ‚ΠΎΡ‚ сцСнарий, Π½Π° языкС программирования Perl, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½,\n";

print "Π΄Π°ΠΆΠ΅ Ссли я Π½Π΅ знаю Π³Π΄Π΅ Π² систСмС находится Perl.\n";


# ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для написания кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… сцСнариСв,

# ΠΊΠΎΠ³Π΄Π° Perl ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ совсСм Π½Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅.

# Бпасибо S.C.


ldd

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для исполняСмого Ρ„Π°ΠΉΠ»Π°.

bash$ ldd /bin/ls

libc.so.6 => /lib/libc.so.6 (0x4000c000)

/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

watch

ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈ запускаСт ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρƒ запусками принимаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ 2 сСкундам, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -n.

watch -n 5 tail /var/log/messages

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ послСдниС 10 строк ΠΈΠ· систСмного ΠΆΡƒΡ€Π½Π°Π»Π°, /var/log/messages, ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΡΡ‚ΡŒ сСкунд.


strip

УдаляСт ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· исполняСмого Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ исполняСмого Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ.

Π­Ρ‚Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ часто ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π² Makefile-Π°Ρ…, ΠΈ Ρ€Π΅Π΄ΠΊΠΎ -- Π² сцСнариях Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ.

nm

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список символов (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² цСлях ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ), содСрТащихся Π² ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

rdist

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, rdist просматриваСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹, вСрсия ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π±ΠΎΠ»Π΅Π΅ старая, Ρ‡Π΅ΠΌ Π½Π° локальной машинС. Π­Ρ‚ΠΎ дСлаСтся сравнСниСм послСднСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° Π½Π° локальной машинС ΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ….

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π°ΠΌΠΈ знания, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· систСмных сцСнариСв. Один ΠΈΠ· самых ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈ простых -- это killall, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся для остановки процСссов ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 13-8. Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ killall, ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° /etc/rc.d/init.d

#!/bin/sh


# --> ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с "# -->", Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.


# --> Π­Ρ‚ΠΎΡ‚ сцСнарий являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° 'rc'-сцСнариСв

# --> Автор: Miquel van Smoorenburg, < [email protected]>


# --> Π­Ρ‚ΠΎΡ‚ сцСнарий Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅Π½ для дистрибутива Red Hat

# --> (Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… дистрибутивах ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ).


# ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ сСрвисы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ (собствСнно,

# ΠΈΡ… ΡƒΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, это лишь Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π½Π° всякий случай)


for i in /var/lock/subsys/*; do

# --> Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ†ΠΈΠΊΠ»Π° for/in, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ "do"

# --> находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ самой строкС, Ρ‡Ρ‚ΠΎ ΠΈ for,

# --> Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… символом ";".

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ΡΡ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сцСнария.

[ ! -f $i ] && continue

# --> ΠžΡ‡Π΅Π½ΡŒ интСрСсноС использованиС "И-списка", эквивалСнтно:

# --> if [ ! -f "$i" ]; then continue


# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя подсистСмы.

subsys=${i#/var/lock/subsys/}

# --> Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС совпадаСт с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°.

# --> Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ эквивалСнт subsys=`basename $i`.


# --> Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ получаСтся имя Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Ссли ΠΎΠ½ присутствуСт,

# -->+ Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ процСсс Π·Π°ΠΏΡƒΡ‰Π΅Π½).

# --> Π‘ΠΌ. описаниС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "lockfile" Π²Ρ‹ΡˆΠ΅.


# ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слуТбу.

if [ -f /etc/rc.d/init.d/$subsys.init ]; then

/etc/rc.d/init.d/$subsys.init stop

else

/etc/rc.d/init.d/$subsys stop

# --> ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ Π΄Π΅ΠΌΠΎΠ½Π°

# --> посрСдством встроСнной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 'stop'.

fi

done

Π’ΠΎΠ±Ρ‰Π΅ΠΌ всС довольно понятно. ΠšΡ€ΠΎΠΌΠ΅ Ρ…ΠΈΡ‚Ρ€ΠΎΠ³ΠΎ манипулирования с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ подсистСмы (слуТбы), здСсь Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ сцСнарий halt Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /etc/rc.d/init.d. Он ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ killall, Π½ΠΎ придСрТиваСтся Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ копию этого сцСнария Π² своСм домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈ поэкспСримСнтируйтС с Π½ΠΈΠΌ (НЕ запускайтС Π΅Π³ΠΎ с привилСгиями ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ). ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ -vn (sh -vn scriptname). Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° "echo".

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ слоТныС сцСнарии ΠΈΠ· /etc/rc.d/init.d. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ, слСдуя рСкомСндациям, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅. Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ sysvinitfiles Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/share/doc/initscripts-?.??, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ "initscripts".