пятница, 30 января 2009 г.

Найти процесс открывший сетевое соединение

Задача: нужно выяснить, что за процесс "висит" на неком известном tcp/udp порту.
Решение: Известно как минимум 3 способа.

1. lsof с ключом -i. Например:

lsof -i tcp:80

2. netstat с ключом -p. Пример:

netstat -nlp | grep 80

3. fuser. Пример:

sudo fuser -v 80/tcp

Как удалить старые неиспользуемые ядра

Проще всего - через Synaptic Package Manager. Ищем по linux-image, отмечаем, удалям.
Список установленных пакетов

Просто о сложном. VPN для начинающих.

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

Именно для облегчения понимания мы рекомендуем всем новичкам настраивать VPN из командной строки и не пользоваться (полу)автоматическими конфигураторами VPN -- как показывает практика, от их непрозрачных настроек одни неприятности. Как вы увидите ниже, этих настроек очень небольшое количество, так что незачем вставать на костыли, чтобы бежать стометровку. К тому же командная строка вам сослужит добрую службу, когда пойдет что-то не так. Вы всегда можете запостить свои конфиги и вывод консольных команд на наш форум, и суровые бородатые дядьки, которые давно на "ты" с линуксом, вам помогут. Потому что вы говорите с ними на одном языке. И наоборот, что-нибудь вроде "в этом окошке я отмечаю галочкой второй снизу пункт" практически гарантирует отсутствие обратной связи.

Настраивать VPN-соединение мы будем по шагам. В конце каждого шага - шаг проверки. Все команды в командной строке вводятся от имени суперпользователя (root). Готовы? Тогда вперед!

Что нам нужно для работы

Для поднятия и настройки VPN-соединения нам потребуются всего две программы - ppp и pptp. Программа ppp с вероятностью 99% уже стоит в вашем дистрибутиве, пакет, содержащий pptp, в разных дистрибутивах называется по-разному, в основном pptp-linux. После установки в системе должны присутствовать два исполняемых файла - /usr/sbin/pppd и /usr/sbin/pptp. Вкратце - pptp создает туннель к VPN-серверу, через который ppp соединяется и работает как обычное модемное соединение.

Естественно, для поднятия соединения нам необходима рабочая локальная сеть и данные провайдера об IP (или имени) VPN-сервера, VPN-логине и VPN-пароле. Также пригодится информация об используемом протоколе аутентификации и о наличии шифрования траффика. Если ее нет - ничего страшного. Подавляющее большинство провайдеров используют протокол аутентификации MS-CHAP v2, а о наличии шифрования нам подскажут логи ошибок pppd. Подсказка: если у вас стоит MS Windows и там поднято VPN-соединение, его параметры можно посмотреть на вкладке соединения "Сведения". Нас интересуют параметры "Проверка подлинности" и "Шифрование".

Все манипуляции мы будем проводить на имеющейся под рукой домашней сети Корбина телеком. Итак, провайдер снабдил нас следующей информацией:
Локальная сеть:
IP: 10.167.17.38
Маска подсети: 255.255.0.0.
Шлюз (gateway): 10.167.0.17
DNS1: 195.14.50.1
DNS2: 195.14.50.21

VPN параметры:
Имя VPN-сервера: vpn.corbina.net
Логин: VPN_LOGIN
Пароль: VPN_PASSWORD
Проверка работоспособности локальной сети

Если сеть уже настроена, мы должны увидеть примерно следующее
[root@myhost sergo]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:13:D4:68:B2:3E
inet addr:10.167.17.38 Bcast:10.167.255.255 Mask:255.255.0.0
inet6 addr: fe80::213:d4ff:fe68:b23e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2884 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:243742 (238.0 Kb) TX bytes:2242 (2.1 Kb)
Interrupt:19
или
[root@myhost sergo]# ip a sh dev eth0
3: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:D4:68:B2:3E brd ff:ff:ff:ff:ff:ff
inet 10.167.17.38/16 brd 10.167.255.255 scope global eth0

[root@myhost sergo]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.167.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.167.0.17 0.0.0.0 UG 0 0 0 eth0
или
[root@myhost sergo]# ip r
10.167.0.0/16 dev eth0 proto kernel scope link src 10.167.17.38
default via 10.167.0.17 dev eth0 scope link
Если ничего подобного не выводится,поднимаем сеть и указываем в качестве шлюза по умолчанию наш шлюз
ifconfig eth0 10.167.17.38 netmask 255.255.0.0 up
route add default gw 10.167.0.17
или
ip a a 10.167.17.18/16 dev eth0
ip l s up dev eth0
ip r a default via 10.167.0.17
Прописываем IP DNS-серверов в файл /etc/resolv.conf Он должен выглядень следующим образом:
[root@myhost sergo]# cat /etc/resolv.conf
nameserver 195.14.50.1
nameserver 195.14.50.21
Если сеть работоспособна, должны пинговаться шлюз и VPN-сервер. Проверяем
[root@myhost sergo]# ping -c5 10.167.0.17
PING 10.167.0.17 (10.167.0.17) 56(84) bytes of data.
64 bytes from 10.167.0.17: icmp_seq=1 ttl=255 time=3.95 ms
64 bytes from 10.167.0.17: icmp_seq=2 ttl=255 time=0.526 ms
64 bytes from 10.167.0.17: icmp_seq=3 ttl=255 time=0.528 ms
64 bytes from 10.167.0.17: icmp_seq=4 ttl=255 time=3.31 ms
64 bytes from 10.167.0.17: icmp_seq=5 ttl=255 time=0.534 ms

[root@myhost sergo]# ping -c5 vpn.someserver.net
PING vpn.corbina.net (195.14.38.8) 56(84) bytes of data.
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=1 ttl=248 time=1.17 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=2 ttl=248 time=1.16 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=3 ttl=248 time=1.19 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=4 ttl=248 time=1.17 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=5 ttl=248 time=1.00 ms
Предварительная настройка роутинга

Настоятельно рекомендуем отложить ненадолго это руководство и прочитать Linux Network Administrators Guide Russian (http://www.linux.yaroslavl.ru/docs/book/lnag/lnag.html). Главы 2 и 5 снимут большинство ваших вопросов относительно роутинга.

Примечание: Предварительная настройка роутинга необходима в том случае, когда VPN и/или DNS-сервера находятся в других подсетях. Если это не так (да вы счастливчик!) - смело пропускайте этот шаг.

Из таблицы маршрутизации мы видим, что в настоящий момент доступ ко всем хостам сети (включая DNS и VPN сервера) осуществляется по маршруту по умолчанию (default route). Это означает, что любой хост, расположенный за пределами нашего сегмента, машина будет искать, обращаясь к шлюзу, указанному в этом маршруте. Когда мы поднимаем VPN-соединение, VPN-сервер дает нам новый шлюз, через который доступны интернет-хосты. Мы должны удалить из маршрута старый шлюз и заменить его на новый. Проблема в том, что после удаления старого шлюза машина перестанет видеть VPN-сервер и разорвет VPN-соединение. Чтобы этого не произошло, наша машина всегда должна знать, где искать VPN и DNS сервера вне зависимости от наличия или отсутствия маршрута по умолчанию. Для этого мы пропишем статические маршруты на каждый VPN и DNS сервер. Также статические маршруты на VPN сервера избавят нас от возможной проблемы, когда удаленный IP адрес, выдаваемый нам VPN сервером, равен IP адресу самого сервера. Подробнее об этом здесь (http://pptpclient.sourceforge.net/howto-diagnosis.phtml#ip_loop пункт 4с.)

Для начала узнаем IP нашего VPN-сервера с помощью команды ping.
[root@myhost sergo]# ping -c5 vpn.corbina.net
PING vpn.corbina.net (195.14.38.8) 56(84) bytes of data.
Как видно из команды ping, IP VPN сервера 195.14.38.8

Примечание: Чтобы не копаться в частностях, мы допускаем в данном примере, что vpn.corbina.net имеет только один IP. Ситуацию, когда хост vpn.corbina.net имеет не один а несколько IP адресов (на самом деле их 20) мы рассмотрим в шаге "Автоматизация".

Добавляем в нашу таблицу роутинга статические маршруты на VPN и DNS сервера:
route add -host 195.14.50.1 gw 10.167.0.17
route add -host 195.14.50.21 gw 10.167.0.17
route add -host 195.14.38.8 gw 10.167.0.17
или
ip r a 195.14.50.1 via 10.167.0.17
ip r a 195.14.50.21 via 10.167.0.17
ip r a 195.14.38.8 via 10.167.0.17
Удаляем маршрут по умолчанию
route del default
или
ip r d default
Таблица маршрутизации будет выглядеть так:
[root@myhost sergo]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
195.14.50.21 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
195.14.50.1 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
195.14.38.8 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
10.167.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
или
[root@myhost sergo]# ip r
195.14.50.21 via 10.167.0.17 dev eth0
195.14.50.1 via 10.167.0.17 dev eth0
195.14.38.8 via 10.167.0.17 dev eth0
10.167.0.0/16 dev eth0 proto kernel skope link src 10.167.17.38
Проверка: мы должны успешно пинговать DNS и VPN сервера.
[root@myhost sergo]# ping -c5 195.14.50.1
PING 195.14.50.1 (195.14.50.1) 56(84) bytes of data.
64 bytes from 195.14.50.1: icmp_seq=1 ttl=56 time=4.45 ms
64 bytes from 195.14.50.1: icmp_seq=2 ttl=56 time=1.30 ms
64 bytes from 195.14.50.1: icmp_seq=3 ttl=56 time=1.22 ms

[root@myhost sergo]# ping -c5 195.14.50.21
PING 195.14.50.21 (195.14.50.21) 56(84) bytes of data.
64 bytes from 195.14.50.21: icmp_seq=1 ttl=56 time=0.982 ms
64 bytes from 195.14.50.21: icmp_seq=2 ttl=56 time=0.954 ms
64 bytes from 195.14.50.21: icmp_seq=3 ttl=56 time=1.02 ms


[root@myhost sergo]# ping -c5 195.14.38.8
PING 195.14.38.8 (195.14.38.8) 56(84) bytes of data.
64 bytes from 195.14.38.8: icmp_seq=1 ttl=248 time=1.34 ms
64 bytes from 195.14.38.8: icmp_seq=2 ttl=248 time=2.60 ms
64 bytes from 195.14.38.8: icmp_seq=3 ttl=248 time=1.09 ms
Настройка параметров VPN-соединения. Тестовый запуск

Все параметры нашего VPN соединения мы запишем в файле /etc/ppp/peers/corbina. Создадим его и наполним следующим содержанием:
pty "pptp 195.14.38.8 --nolaunchpppd"
user VPN_LOGIN
password "VPN_PASSWORD"
nodeflate
nobsdcomp
noauth
Параметры user и password в комментариях не нуждаются, значение остальных можно посмотреть в файле справки man pppd. Обратим внимание на то, что пароль забран в кавычки.

Убеждаемя, что в файлах /etc/ppp/options, ~/.ppprc, /etc/ppp/options.ppp0 нет незакомментированных параметров, которыми бы система могла затереть наши настройки. Если есть - комментируем

Поднимаем VPN соединение

pppd call corbina debug nodetach

Появятся логи соединения. Если все прошло успешно, они будут выглядеть примерно так:
[root@myhost sergo]# pppd call corbina debug nodetach
using channel 2
Using interface ppp0
Connect: ppp0 /dev/pts/0
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0x1 ]
sent [LCP ConfAck id=0x1 ]
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfAck id=0x1 ]
sent [LCP EchoReq id=0x0 magic=0x33368137]
rcvd [CHAP Challenge id=0x1 , name = "bras8"]
sent [CHAP Response id=0x1 , name = "unicorn2"]
rcvd [LCP EchoRep id=0x0 magic=0x36da4966]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 ]
rcvd [IPCP ConfReq id=0x1 ]
sent [IPCP ConfAck id=0x1 ]
rcvd [IPCP ConfRej id=0x1 ]
sent [IPCP ConfReq id=0x2 ]
rcvd [IPCP ConfNak id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfAck id=0x3 ]
Cannot determine ethernet address for proxy ARP
local IP address 89.178.77.182
remote IP address 195.14.38.8
Script /etc/ppp/ip-up started (pid 4072)
Script /etc/ppp/ip-up finished (pid 4072), status = 0x0
На соседнем терминале убедимся, что VPN-соединение установлено. Должен появиться сетевой интерфейс ppp0: [root@myhost sergo]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:13:D4:68:B2:3E
inet addr:10.167.17.38 Bcast:10.167.255.255 Mask:255.255.0.0
inet6 addr: fe80::213:d4ff:fe68:b23e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24990 errors:0 dropped:0 overruns:0 frame:0
TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2327027 (2.2 Mb) TX bytes:8516 (8.3 Kb)
Interrupt:19

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13496 errors:0 dropped:0 overruns:0 frame:0
TX packets:13496 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1387313 (1.3 Mb) TX bytes:1387313 (1.3 Mb)


ppp0 Link encap:Point-to-Point Protocol
inet addr:89.178.77.182 P-t-P:195.14.38.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:40 (40.0 b) TX bytes:46 (46.0 b)
Если VPN сервер использует шифрование, соединение закончится ошибкой [ЗДЕСЬ ДОЛЖНЫ БЫТЬ ЛОГИ ОШИБКИ]. В этом случае добавим в файл /etc/ppp/peers/corbina строчку
require-mppe-128
и загрузим соответствующий модуль ядра командой
modprobe ppp_mppe
Запускаем снова. Все должно заработать.

Обратите внимание на параметр MTU интерфейса ppp0. По умолчанию он равен 1500. Если ваш провайдер использует другую величину MTU (допустим, 1492) - в тот же файл конфигурации etc/ppp/peers/corbina добавляем строчку
mtu 1492
Окончательная настройка роутинга

Итак, мы подняли VPN соединение, но в интернет выйти не можем - машина пока не знает, где искать интернет-хосты. Для этого мы должны добавить маршрут по умолчанию через интерфейс ppp0 в нашу таблицу маршрутизации (помните - старый маршрут по умолчанию мы удалили). В качестве шлюза по умолчанию теперь выступает remote IP address, который нам любезно предоставил VPN сервер - 195.14.38.8 (да-да, в нашем случае он совпадает с IP VPN сервера!). Этот remote IP address присутствует как в логах pppd (remote IP address 195.14.38.8), так и в параметрах интерфейса ppp0, которые выводятся на экран командой ifconfig (P-t-P:195.14.38.8). Вводим:
route add default gw 195.14.38.8
или
route add default dev ppp0
что в данном контексте - одно и то же Теперь попробуем пропинговать какой-нибудь интернет-хост
[root@myhost sergo]# ping -c5 www.ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=61 time=2.11 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=61 time=2.23 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=61 time=2.39 ms
Работает!

Теперь, когда соединение оттестировано, можно подумать и об автоматизации. Когда pppd устанавливает соединение, он автоматически выполняет скрипт /etc/ppp/ip-up, когда соединение рвется - выполняется скрипт /etc/ppp/ip-down. Значит, в эти файлы и надо забить весь роутинг, который в предыдущих пунктах мы вводили руками.

Мы не случайно сначала рассмотрели идеальный вариант, когда VPN сервер провайдера представлен в единственном числе и имеет один IP. В этом случае именем хоста (vpn.corbina.net) можно пренебречь и использовать в настройках только его IP, что мы и сделали. Однако если провайдер большой, под именем VPN сервера скрывается несколько серверов с разными IP, что позволяет провайдеру динамически регулировать нагрузку на них. Для того, чтобы выяснить, какие IP имеет хост vpn.corbina.net, воспользуемся командой host из пакета dnsutils
[root@myhost sergo]# host vpn.corbina.net
vpn.corbina.net has address 195.14.38.19
vpn.corbina.net has address 195.14.38.20
vpn.corbina.net has address 195.14.38.1
vpn.corbina.net has address 195.14.38.2
vpn.corbina.net has address 195.14.38.3
vpn.corbina.net has address 195.14.38.4
vpn.corbina.net has address 195.14.38.5
vpn.corbina.net has address 195.14.38.6
vpn.corbina.net has address 195.14.38.7
vpn.corbina.net has address 195.14.38.8
vpn.corbina.net has address 195.14.38.9
vpn.corbina.net has address 195.14.38.10
vpn.corbina.net has address 195.14.38.11
vpn.corbina.net has address 195.14.38.12
vpn.corbina.net has address 195.14.38.13
vpn.corbina.net has address 195.14.38.14
vpn.corbina.net has address 195.14.38.15
vpn.corbina.net has address 195.14.38.16
vpn.corbina.net has address 195.14.38.17
vpn.corbina.net has address 195.14.38.18
Роутинг на всю эту прорву серверов нам нужно один раз внести в файл /etc/ppp/ip-up и привести файл к следующему виду:
#!/bin/sh
#
# This script is run by pppd when there's a successful ppp connection.
#
route add -host 195.14.38.1 gw 10.167.0.17
route add -host 195.14.38.2 gw 10.167.0.17
route add -host 195.14.38.3 gw 10.167.0.17
....
route add -host 195.14.38.19 gw 10.167.0.17
route add -host 195.14.38.20 gw 10.167.0.17
route del default
а в скрипт /etc/ppp/ip-down мы запишем всего одну строчку, которая вернет нам шлюз по умолчанию после обрыва соединения:
#!/bin/sh
#
# This script is run by pppd after the connection has ended.
#
route add default gw 10.167.0.17
Вы, наверное, уже заметили, что мы не вписали в файл /etc/ppp/ip-up строчку route add default dev ppp0. Это не нужно - после успешного коннекта pppd сам впишет шлюз по умолчанию, если мы дадим ему команду defaultroute. В результате наш файл настроек /etc/ppp/peers/corbina будет выглядеть следующим образом:
pty "pptp vpn.corbina.net --nolaunchpppd"
user VPN_LOGIN
password "VPN_PASSWORD"
nodeflate
nobsdcomp
noauth
defaultroute
Мы заменили IP VPN-сервера на его имя и добавили defaultroute Запускать и прерывать соединение можно командами
pon corbina
poff corbina
Если есть необходимость запускать соединение от простого пользователя, установите программу sudo и в файл /etc/sudoers впишите:
sergo myhost = NOPASSWD: /usr/bin/pon, /usr/bin/poff
Соответственно, замените sergo и myhost на имя вашего пользователя и его машины. Он сможет запускать и прерывать соединение командами
sudo pon corbina
sudo poff corbina
Дополнительно:

ubuntu и VLAN

Давеча пришлось настроить на сервере с убунтой VLAN-интерфейсы. Оказалось все проще простого.
Шаг 1. Ставим пакет vlan
Шаг 2. Загружаем модуль 8021q и прописываем его постоянную загрузку в /etc/modules
Шаг 3. Создаем в /etc/network/interfaces новый интерфейс. Если определенным образом обозвать интерфейса (варианты vlanX и eth0.X допустимы), то он будет рассмотрен как VLAN-интерфейс.
Т.е. можно сделать примерно так:
interface eth0.1 inet static
address 10.0.0.1
netmask 255.255.255.0

Как стать за короткое время администратором DNS


Блог системного администратора. Книжечка: Как стать за короткое время администратором DNS

Установка ubuntu через флешку

Есть много разных способов установки Linux’a, а в частности убунты через usb-флешку. Я выбрал самый простой: заливка ОС на флешку. Теперь подробнее:

Для создания флешки с осью, вам надо установить ubuntu/kubuntu.

Заходим в “Система->Администрирование->Источники приложений” и добавляем источник “deb http://ppa.launchpad.net/probono/ubuntu hardy main” .
После этого в консули прописываем:

sudo apt-get install liveusb

Ждем установки. После установки заходим в “Система->Администрирование->Install Live USB”, но у вас должна быть вставлена флешка (минимум 1гб) и диск с убунтой/кубунтой в дисковод. В появившимся окошке нажимаете “выполнить” и подтверждаете создание двух папок, после этого ждете и все, флешка с убунтой/кубунтой готова! Теперь можно с нее устанавливать ОС.

Команды Linux - Системная информация

arch : отобразить архитектуру компьютера
uname -m : отобразить архитектуру компьютера (2)
uname -r : отобразить используемую версию ядра
dmidecode -q : показать аппаратные системные компоненты - (SMBIOS / DMI)
hdparm -i /dev/hda : вывести характеристики жесткого диска
hdparm -tT /dev/sda : протестировать производительность чтения данных с жесткого диска
cat /proc/cpuinfo : отобразить информацию о процессоре
cat /proc/interrupts : показать прерывания
cat /proc/meminfo : проверить использование памяти
cat /proc/swaps : показать файл(ы) подкачки
cat /proc/version : вывести версию ядра
cat /proc/net/dev : показать сетевые интерфейсы и статистику по ним
cat /proc/mounts : отобразить смонтированные файловые системы
lspci -tv : показать в виде дерева PCI устройства
lsusb -tv : показать в виде дерева USB устройства
date : вывести системную дату
cal 2007 : вывести таблицу-календарь 2007-го года
date 041217002007.00 : установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)

clock -w : сохранить системное время в BIOS
shutdown -h now : Остановить систему
init 0
telinit 0
shutdown -h hours:minutes & : запланировать остановку системы на указанное время
shutdown -c : отменить запланированную по расписанию остановку системы
shutdown -r now : перегрузить систему
reboot
logout : выйти из системы

Кое-что о проблемах с кодировками в убунту

Я не ставил себе цель решить все проблемы, но хотел написать решения, о которых не писалось на хабре.
В основном коснусь кодировок в icq.

Итак начнем с IM. Хорошая хозяйка может взять на заметку несколько следующих фактов. Миранда прекрасно ладит как с utf так и с 1251. qip принимает только 1251 и не желает работать с utf. Pidgin настроеный на utf не принимает 1251. Pidgin настроенный на 1251 принимает utf но отсылает в ответ все равно 1251.
Резюмирую предыдущий параграф, могу сказать что пока корректнее всего работает с кодировками миранда, но ее надо запускать таким образом: env LC_ALL=ru_RU.cp1251 wine miranda.exe иначе она не будет работать с cp1251.
UPD
Прошу собого внимания тех, кто пользуется пиджином
Pidgin получает сообщения из офлайна кракозябрами.
Пользователь Zeboton подсказал, что в свойствах Pidgin надо писать не cp1251 а WINDOWS-1251 тогда проблема исчезает.
Я сам проверял, действительно так.
/UPD
Вообще метод запуска LC_ALL=ru_RU.cp1251 wine программа.exe может применяться ко всем виндовым программам с проблемными кодировками, но я думаю что этим я америку не открыл.

У вас было такое, что вы вставляете нормальный диск а кириллические названия выглядят примерно так: "?????".
Проблема, как ни странно, в том (по крайней мере с моими дисками), что он НЕ примонтировался В СИСТЕМНОЙ КОДИРОВКЕ UTF8!
Если вам попался такой диск попробуйте примонтировать с опцией -o iocharset=utf8. Если буквы проявили свою кириллическую сущность, то можете прописать в fstab опцию iocharset=utf8 к сиди-рому.

И немного про субтитры в mplayer.
С начала находим шрифт с поддержкой кириллицы, хотя бы ту же тахому. Кладем в home/юзер/.mplayer. Находим там же файл config.
Пишем в него:
font=/home/юзер/.mplayer/tahoma.ttf
subcp="utf8"
Если сабы у вас с 1251 последнюю строчку следует заменить на
subcp = "cp1251"
UPD
Пользователь non7top подсказал, что для автоопределения кодировки в mplayer вместо subcp = "cp1251" надо написать:
subcp = enca:ru:cp1251
при этом должна быть установлена enca.

Тут немного о кодироваках в аудиофойлах и проигрывателях.

Собственно пока все. Если вы считаете что какую-либо проблему надо решать по-другому либо знаете как решить другую - пишите.

Источник: http://habrahabr.ru/blogs/ubuntu/21187/

четверг, 29 января 2009 г.

Красивая консоль

Bash is the shell, or command language interpreter, for the gnu operating system. The name is an acronym for the ‘Bourne-Again SHell’, a pun on Stephen Bourne, the author of the direct ancestor of the current Unix shell sh, which appeared in the Seventh Edition Bell Labs Research version of Unix.

Основы

Bash настраивается редактированием 3х текстовых файлов, которых находятся в домашней папке пользователя:.bash_profile (.profile), .bashrc,.bash_logout.

При отсутствии этих файлов используются настройки по-умолчанию, хранящиеся в файлах

/etc/profile и /etc/bash.bashrc.

~/.bash_profile — читается при каждом входе в систему;

~/.bashrc — читается при каждом запуске дочернего шелла;

~/.bash_logout — читается при выходе из системы.

Таким образом, изменения внесенные в profile будут применены при следующем входе в систему, а в bashrc — при запуске нового терминала.

Частично изменить это можно с помощью команды source /config/file. В этом случае изменения будут применены немедленно.

Кастомизация приветствия

Внешний вид системного приветствия изменяется с помощью изменения значения переменной PS1. Редактировать мы будем ~/.bashrc.

По-умолчанию, системное приветствие выглядит примерно так: user@hostname:~$, что соответствует следующему значению переменной PS1:

Рассмотрим список допустимых параметров:

Параметр - Значение
\a - an ASCII bell character (07)
\d - дата в формате ''День_недели, Месяц, Число''.
\e - an ASCII escape character (033)
\h - имя хоста до первой точки.
\H - имя хоста
\j - количество задач, работающих в шелле в настоящее время
\l - название терминала
\n - переход на новую строку
\r - возврат каретки на начало строки
\s - название шелла (будет выведено, например, «bash»
\t - время в 24-часовом формате (ЧЧ: MM: СС)
\T - время в 12-часовом формате (ЧЧ: ММ: СС)
\@ - время в 12-часовом формате (AM/PM)
\u - имя активного пользователя
\v - номер версии bash
\V - номер версии bash, номер релиза, номер патча
\w - текущая директория (будет выведено в формате /path/to/work_dir_name)
\W - имя текущей директории (будет выведено в формате «dir_name\»)
\! - номер команды в истории
\# - системный номер команды
\$ - if the effective UID is 0, a #, otherwise a $
\\ - обратный слэш
\[ - начало последовательности непечатаемых символов (см. примеры в разделе «Цвета и стилизация».
\] - конец последовательности символов
$ ( ) - внешняя комманда

Кроме стандартных параметров, при настройке приветствия можно использовать внешние скрипты и команды.

Пример:

Изменим стандартное приветствие так, чтобы дополнительно выводилась дата в формате (ДД/ММ/ГГГГ).
Результат будет выглядеть следующим образом:

Цвета и стилизация

— Внешний вид и стиль надписей в шелле настраивается с помощью ASCII-свойств.

Рассмотрим следующие таблицы:

Название стиля - Код
Сбросить все свойства - 0
Повышенная яркость - 1
Пониженная яркость - 2
Подчеркнутый - 4
Нормальная яркость - 5
Инвертированный - 7
Скрытый - 8

Цвета - Название цвета Текст Фон

Черный - 30 40
Красный - 31 41
Зеленый - 32 42
Желтый - 33 43
Синий - 34 44
Маджента - 35 45
Циановый - 36 46
Белый - 37 47

Свойства текста задаются в формате [свойство_фона;цвет_фона;свойство_текста;цвет_текста].

В случае, если цвет фона менять не надо — первые два параметра можно опустить.

Пример:

Результатом будет

— вывод строки ''vrootmnelogi'' красным подчеркнутым текстом на черном фоне.

— вывод строки ''!!111'' стандартным для терминала шрифтом.

Структура примера:

\[\033[ m\] — устанавливает свойства последующего текста
0;40;4;31 — см. выше
\[\033[0m\] — сбрасывает свойства

Настройка цветного вывода ls

Делается это следующим образом:

1. Открываем ~/.bashrc и дописываем:

if [ «$TERM» != «dumb» ]; then

[ -e «$HOME/.dircolors» ] && DIR_COLORS=«$HOME/.dircolors»

[ -e «$DIR_COLORS» ] || DIR_COLORS=«»

eval «`dircolors -b $DIR_COLORS`»

alias ls='ls —color=auto'2. Импортируем и открываем для редактирования стандартную цветовую схему:
dircolors -p ~/.dircolors
nano ~/.dircolors Выгядит она примерно так:.tgz 01;31

.svgz 01;31

.arj 01;31

.taz 01;31

.lzh 01;31

.lzma 01;31

3. Меняем цвета и стили, сверяясь с таблицей из предыдущего раздела.

4. Сохраняем изменения, запускаем новый шелл.

Если добавить в файл .bashrc, что в домашнем каталоге, строчку:
PS1="\[\033[0;33;40m[\t]\033 \[\033[1;31;40m[\033[1;32;40m\u@\h:\033[1;33;40m\w\033[1;31;40m]\033[1;35;40m $\033[0;37;0m\] " export PS1
То привычный вид черно-белой консоли становится интересней :-)

PS1='\[\033[02;34m\]\D{%H.%M} \u@\h\[\033[00m\] \w\n\$ '
PS1 лучше всего задавать в $HOME/.bashrc

Добавляем для обычного пользователя следующее:
COLOR1="\[\033[1;32;40m\]" #зеленый
COLOR2="\[\033[1;34;40m\]" #синий
COLOR3="\[\033[1;37;40m\]" #белый
PS1="$COLOR1\u@\h: $COLOR2\w \$ $COLOR3"

COLOR1="\[\033[1;31;40m\]" #красный
COLOR2="\[\033[1;34;40m\]" #синий
COLOR3="\[\033[1;37;40m\]" #белый
PS1="$COLOR1\u@\h: $COLOR2\w \$ $COLOR3"

Цветные man страницы

Устанавливаем:
apt-get install most

в .bashrc добавим:
export PAGER=most

и после перезапуска (login/logout или в сразу в консоли сделайте export) проверяем:
$man dpkg

man most - для дополнительной инфы


Кто и зачем разрабатывает Linux

Свыше 85% изменений в ядро Linux вносится крупными ИТ-компаниями, такими, как Red Hat, Novell, IBM, Intel и другими. Лишь 13,9% программистов занимаются разработкой ядра исключительно в качестве хобби — таковы результаты исследования, выполненного по заказу The Linux Foundation (LF). Разработчики ядра имеют разные цели – кто-то улучшает его поддержку в собственном оборудовании, другие ориентируются на спрос со стороны пользователей.
GNU/Linux — сложная система, включающая тысячи различных пакетов, от самых распространённых, таких, как утилиты GNU, X.org, графические среды GNOME и KDE, до специфичных для какого-то одного из дистрибутивов. Команды разработчиков каждого проекта отличаются численностью, подходом к работе, используемыми инструментами и методами планирования работ. При этом ядро Linux занимает особое место среди всех прочих приложений. От него зависит возможность работы системы GNU/Linux на различных аппаратных платформах и степень поддержки различных устройств. Поэтому характеристики процесса его разработки могут, в какой-то степени, служить индикатором для всей системы GNU/Linux.

Исследование LF охватывает трехлетний период разработки ядра (от версии 2.6.11 до версии 2.6.24) и фокусируется на таких характеристиках, как частота релизов и изменений, размер исходных текстов ядра, и самое главное, позволяет получить представление о том, кто же всё-таки разрабатывает ядро Linux.

Статистика показывает, что, в среднем, каждый новый релиз ядра выходит раз в 2,5 — 3 месяца (60 — 110 дней). В первую очередь это связано с выбранной в 2005 г. моделью разработки, направленной на сведение к минимуму длительности промежутков между разработкой новых функций, появлением поддержки новых устройств и включением их в ядро; а также сводящей к минимуму потребность создателей дистрибутивов в модификациях ядра.

При этом число изменений (патчей), вносимых в ядро, имеет тенденцию к росту. Сводя воедино эти две характеристики, можно отметить, что, в среднем, в ядро вносится 2,83 патча в час, при этом, в строках кода каждый день в ядро добавляется свыше 3 тыс. строк, более 1,4 тыс. строк модифицируется.

Расхожее в некоторых кругах представление о Linux как о системе, разрабатываемой любителями, неверно
Расхожее в некоторых кругах представление о Linux как о системе, разрабатываемой любителями, неверно

Число разработчиков, принявших участие в выпуске версии 2.6.24, более чем в два раза превысило этот показатель для версии 2.6.11 и составило 1057 человек.

Компании, которые наиболее активно осуществляют доработку ядра Linux

Название компании Количество изменений % от общего числа изменений
Частные пользователи 11,594 13.9%
Название не определено 10,803 12.9%
Red Hat 9,351 11.2%
Novell 7,385 8.9%
IBM 6,952 8.3%
Intel 3,388 4.1%
Linux Foundation 2,160 2.6%
Consultant 2,055 2.5%
SGI 1,649 2.0%
MIPS Technologies 1,341 1.6%
Oracle 1,122 1.3%
MontaVista 1,010 1.2%
Google 965 1.1%
Linutronix 817 1.0%
HP 765 0.9%
NetApp 764 0.9%
SWsoft 762 0.9%
Renesas Technology 759 0.9%
Freescale 730 0.9%
Astaro 715 0.9%
Academia 656 0.8%
Cisco 442 0.5%
Simtec 437 0.5%
Linux Networx 434 0.5%
QLogic 398 0.5%
Fujitsu 389 0.5%
Broadcom 385 0.5%
Analog Devices 358 0.4%
Mandriva 329 0.4%
Mellanox 294 0.4%
Snapgear 285 0.3%

Источник: Linux Foundation

При этом, однако, всего 10 ведущих разработчиков совместно внесли почти 15% изменений, а 30 ведущих разработчиков — 30%. Это, однако, не значит, что расхожее в некоторых кругах представление о Linux как о системе, разрабатываемой любителями, верно. Несмотря на то, что далеко не у всех компаний, занимающихся свободным ПО, есть необходимость вносить изменения в ядро, число компаний, участвующих в его разработке, растёт. Четыре крупнейших компании-разработчика ядра — Red Hat, Novell, IBM и Intel — оплатили более 32% внесённых за время исследования изменений, а суммарный процент изменений в ядро, внесённых разработчиками, работающими на компании, составил более 70%.

При этом среди компаний, участвующих в разработке ядра, выделяется несколько групп по основной цели участия в разработке. Это группа компаний, включающая IBM, Intel, HP, SGI, MIPS и других, которая ориентируется, в основном, на поддержку работы Linux на собственном оборудовании. Дистрибьюторы, такие, как Red Hat, Novell, MontaVista, имеют целью добавление в ядро возможностей, на которые существует спрос среди пользователей, и которые усиливают конкурентоспособность дистрибутивов как конечных продуктов. Такие компании, как Sony, Nokia, Samsung, работают над ядром для улучшения работы систем на базе ядра Linux в собственных устройствах.

Таким образом, из исследования Linux Foundation можно сделать выводы о том, что ядро Linux является беспрецедентным примером успешного сотрудничества различных по размеру и производимой продукции компаний и индивидуальных разработчиков, считают исследователи. Количество этих разработчиков и распределение их вклада в разработку может служить, в некотором смысле, гарантией стабильности и независимости разработки. Это наглядно демонстрирует преимущества как открытой модели разработки в целом, так и гарантий, предоставляемых разработчикам и конечным пользователям самой концепцией свободного ПО, закреплённой в лицензии GNU GPL.

Заговор от битых кластеров (добавляем информацию для восстановления архивов с помощью par2)

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

Итак, к делу: регулярно, при записывании данных на диск, остается некоторое количество свободного места. Лет 5 назад можно было положить диск на полочку, пометив, что еще 30 мегабайт можно забить каким-нибудь хламом, но сейчас стоимость болванки - 10 рублей, такой аргумент не действует. И, соответственно, привычку оставлять место “на потом” надо искоренять. Мне кажется, наиболее разумным было бы добавить на диск данные для восстановления - т.н. корректирующие коды Рида-Соломона, которые могут пригодится в случае, если диск будет поврежден.

Собственно весь заговор выглядит следующим образом:
#sudo aptitude install par2
#man par2
#cd backups
#ls
dump.sql.gz
#par2 create -v -r10 -n1 -m500 dump.sql.gz
#ls
dump.sql.gz dump.sql.gz.par2 dump.sql.gz.vol000+100.par2

Эта команда добавит 10% избыточной информации к данным, запишет все это в один файл, при этом программе par2 разрешено использовать 500 мегабайт оперативной памяти. Файлы *.par2 следует записать на диск вместе с дампом.

Мне эта программа понравилась, я захотел ее проверить в боевых условиях. Сделал архив размером около 400 Мб, добавил данные для восстановления - еще 200Мб - *.par2 файлы (50% избыточность, по умолчанию - 5%). Все это я записал на CD-RW, в котором потом сделал, простите, дырку. В итоге стандартными средствами удавалось прочитать только первые 150 Кб данных. Чтобы восстановить файл нужно сначала все считать пускай с ошибками - для этого есть программа dd_rescue, которая является практчески полным аналогом dd с одним исключением - она умеет игнорировать ошибки чтения:

диск с дыркой

#sudo dd_rescue -Av -b 1048576 -B 1048576 /dev/scd0 brokencd.iso(-A - заполняь нулями те участки файла, которые считать не удалось, v - verbose, -b - размер блока данных, -B - размер блока данных для проблемных областей диска)
# sudo mount -o loop brokencd.iso mnt # монтируем получившийся образ диска
# cp mnt/* dump; cd dump # копируем содержимое
# par2 r archive.par2 # приводим в изначальный вид

На этом эксперимент завершился - все данные с диска восстановлены.

Ubuntu и анонимность

Небольшой howto про Ubuntu и Tor.

Tor это программный проект, который поможет вам защититься от “анализа потока данных” — разновидности сетевого надзора, который угрожает персональной свободе и приватности, конфиденциальности бизнес контактов и связей, а также общегосударственной безопасности. Подробнее…

Для начала установим две программы: сам Tor и privoxy

$ sudo apt-get install tor privoxy

Сразу после окончания установки, редактируем конфигурационный файл Privoxy:

$ sudo gedit /etc/privoxy/config

Находим секцию 5.2. forward-socks4 and forward-socks4a и добавляем строку (незабываем про точку на конце!):

forward-socks4a / localhost:9050 .

Теперь отключим ведение логов. Найдём секцию 2.6. logfile и закомментируем строчку logfile logfile

# logfile logfile

Так же избавляемся и от cookies. Находим секцию 2.7. jarfile и закомментируем строчку jarfile jarfile

# jarfile jarfile

Всё. Сохраняем файл и перезапускаем Privoxy:

$ sudo /etc/init.d/privoxy restart

Теперь настала пора настроить использование прокси. Открываем Главное меню >> Система >> Параметры >> Сервис прокси и вбиваем туда всё, как указано на рисунке. Когда всё готово, жмём “Применить ко всей системе”.

Всё. Теперь лишь осталось настроить все остальные программы…

Взлом паролей к архивам

Собственно, установка шлюза на базе Ubuntu-Server занимает не больше 10-15 минут. Что я и проделал не так давно.

1. Устанавливаем систему (я ставил ubuntu-8.10-server-i386.iso);
2. У меня подключение по локальной сети с использованием PPPoE. Для этого просто-напросто было запущено sudo pppoeconf и даны ответы на вопросы. По окончании работы pppoeconf соединение было установлено, о чем свидетельствовал положительный вывод на команду ifconfig ppp03. На установленной машине интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить sudo apt-get update;
3. Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета: dnsmasq — чтобы переправлслись ваши DNS-запросы и ipmasq — собственно для NAT'a;
4. На машинках локальной сети получаем IP по DHCP от dnsmasq либо прописываем шлюз по умолчанию ручками;

Да поможет Вам данная инструкция! Ура! Далее про добавление squid ко всему этому хозяйству.

Доустановим на наш серверок кэширующий прокси-сервер squid:

1. Репозитарии мы уже подключали ранее, так что просто ставим пакет apt-get install squid;
2. Идем редактировать конфиг. Открываем /etc/squid/squid.conf, ищем нужные строки и корректируем следующим образом:

...
http_port 3128 #<<< раскомментировать эту строчку
...
cache_dir ufs /var/spool/squid 100 16 256 #<<< раскомментировать эту строчку
...
acl our_networks src 192.168.0.0/24 #<<< раскомментировать эту строчку
http_access allow our_networks #<<< раскомментировать эту строчку
...
visible_hostname proxy.localdomain #<<< добавить строчку, скорее всего взамен строки 2161
...
3. Перезапускаем проксю /etc/init.d/squid restart;
4. Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси — пишем IP-адрес интерфейса, обращенного в локалку. Скорее всего это будет 192.168.0.1, порт прокси — указанный в конфиге 3128.

UPDATE:

Желающим сделать прозрачное проксирование необходимо изменить в конфиге squid.conf одну строчку

...
http_port 3128 transparent
...

Затем для заворачивание нужных портов на сквид прописывается правило:

iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

Вот и все. Теперь у вас есть полноценный маршрутизатор на базе Ubuntu-server, а дальше дело Вашей фантазии. Можете сделать и фаловый, и вэб-сервер, и ftp, вообщем все, что Вам только захочется.

Ещё раз подчеркиваю, простоту и эффективность использования Ubuntu.

Исправляем тэги MP3

Как ни печально, при уходе с Windows большая часть моей русскоязычной музыкальной коллекции стала неюзабельной — названия песен, исполнителей и прочие MP3 тэги превратились в кракозябру.

Причина проста — вместо универсальной кодировки Unicode тэги были прописаны в специфичной для Windows кодировке CP1251, которая в Linux, мягко говоря, не ценится.

Решения можеть быть два:

* научить музыкальный плеер понимать нашу кодировку
* сконвертировать тэги в универсальный Unicode

Для себя я выбрал второе.

Так будет работать со всеми плеерами (даже под Windows) безо всякой настройки, да и правильнее это. ;-)

По конвертации тэгов есть хороший мануал, но лично мне не подошёл:

* запускать Java-приложения неудобно, особенно в конвейере
* нужно вручную скачивать id3iconv
* EasyTag работает откровенно медленно

В итоге остановился на следующем:
sudo aptitude update
sudo aptitude install python-mutagen
find /media/sda1/music/ -iname "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d --remove-v1

Соответственно, /media/sda1/music/ — мой каталог с музыкой, а *.mp3 — расширение моих MP3 файлов.

Процесс конвертации занял около получаса (на NTFS разделе; на родном разделе должно быть быстрее). Результат оправдал ожидания — русские названия стали отображаться правильно.

P.S. В процессе работы сбивает шрифты конкретного экземпляра консоли. Не стоит пугаться — тэги переименовываются правильно.

Идентификация разделов дисков by UUID

Иногда на Debian Linux всплывает глюк (возможно это глюк контроллера) — при загрузке он меняет местами винты. Как следствие, ОС не может найти root-раздел и вываливается в busybox. Одно из решений, отказаться от идентификации разделов через /dev/sdXN.

Рецепт прост:

1. Запускаем /sbin/blkid и смотрим UUID для каждого раздела.
2. В /etc/fstab вместо /dev/sdaN прописываем UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX (кавычки не ставим).
3. В /boot/grub/menu.lst найти строчку (закомментированную) kopt=root=/dev/sdaN ro и заменить её на kopt=root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ro.
4. Запустить /sbin/update-grub.
5. Перезагрузиться.

15 аргументов в пользу Linux

В конце 80-х годов 20-го века профессор Амстердамского университета Эндрю Танненбаум взялся за написание Minix - UNIX-подобной ОС, которая может работать на PC. Это было вызвано тем, что стоимость лицензии на "настоящий" UNIX была непомерно высока для использования в университете. Весной 1991 года студент Хельсинского университета Линус Бенедикт Торвальдс решил переделать Minix, адаптировав его для i386. Сам Линус воспринимал это занятие, как хобби. Изначально предполагалось, что система будет свободна от лицензионных ограничений коммерческого характера.
15 аргументов в пользу Linux.


Если попытаться устроить социологический опрос о причинах растущей популярности Linux, то, скорее всего, мнения равномерно распределятся на всем промежутке от "да это просто модно" до "да это же модель новых социальных взаимоотношений в постиндустриальном обществе". Одно это позволяет говорить о Linux не только как об одной из юниксообразных операционных систем, но и как о некоем социальном феномене.

Вполне возможно, что уже не за горами то время, когда знание Linux и умение работать в этой операционной системе станет чем-то вроде правила хорошего тона. Вполне возможно, что конец века прошлого и начало нынешнего войдет в историю, как время противостояния великой империи Microsoft и независимых свободных разработчиков, сплоченных идеей Open Source и выбравших Linux для продвижения идеологии свободы.

Одного того, что операционная система, созданная "свободным трудом свободно собравшихся людей", реально конкурирует с Windows, достаточно для того, чтобы охарактеризовать Linux как некий феномен, не имеющий аналогов. Количество аргументов в пользу того, что использовать Linux можно и нужно, растет день ото дня.

А нужен ли нужен Linux лично вам? Ответ на этот вопрос удобнее всего рассматривать с трех точек зрения: программно-технической, экономико-юридической и эмоционально-мировоззренческой. Итак, приступаем...


Точка зрения #1.
Программно-техническая

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


Аргумент первый. Linux - очень устойчивая система. Если пользователь Windows представляет собой человека, закаленного "синим экраном" и предложениями "отправить сообщение об ошибке", то пользователь Linux от такого удовольствия практически избавлен. Максимум, на что способна Linux, - это моментально закрыть зависшее приложение. При этом сама система вместе с остальными запущенными процессами спокойно продолжает функционировать. Вы можете совершенно свободно запускать даже бета-версии программ на машине с работающим веб-сервером.

Лично я неоднократно проделывал эту операцию, причем устойчивость прикладной программы (точнее, ее неустойчивость) никак не влияла на работу сервера. Linux довольно тяжело "уронить" не только нечаянно, но и по злому умыслу. При правильной организации работы, мероприятия по защите системы можно в основном свести к вопросу о защите компьютера как физического тела. Причем речь в данном случае идет о системе, под управлением которой может одновременно выполняться множество задач.


Аргумент второй. В системе Linux реализована реальная и контролируемая многозадачность. Операционная система Linux позволяет запускать на одном компьютере несколько приложений. Причем не просто запускать, полагаясь на то, что система, которая знает, чего вы хотите, намного лучше вас (не правда ли, знакомая ситуация?) будет "разруливать" эти приложения, а самому указать приоритеты выполнения каждой программы (ага, именно об этом я мечтал долгими зимними вечерами - ломать голову над тем, какой программе - а у меня процессов тридцать запущены постоянно - сколько приоритета дать - прим. ред.). Разумеется, в процессе работы вы можете посмотреть все процессы, выполняемые на вашей машине и, при необходимости "убить" ненужные или зависшие. Но только свои, ибо...


Аргумент третий. Linux - многопользовательская система. На машине с правильно настроенной системой Linux может одновременно работать несколько пользователей. Причем не только по очереди (запустил программу и пошел пить чай, а в это время кто-то другой набирает текст или бродит по Сети), но и одновременно. И это вовсе не фантастика. В Московском государственном индустриальном университете (МГИУ) уже более десяти лет процесс обучения студентов-программистов ведется в основном с использованием бесплатного и свободно распространяемого программного обеспечения.

Причем, в целях все той же экономии, они подключают к системному блоку по три монитора, три клавиатуры и три мыши. Создатели этого Змея Горыныча утверждают, что сделать четырехглавого змея им помешало только то, что шнуры от четвертого комплекта просто некуда было воткнуть.

Даже на машине "для индивидуального использования" это игнорировать это свойство системы, унаследованное ей от своего именитого прародителя (это как? в прародителя тоже по три клавы одновременно втыкали? - прим. ред.), крайне не рекомендуется. Это связано с тем, что наиболее важные программы, от работы которых напрямую зависит устойчивость системы, запускаются от имени так называемого суперпользователя, а все остальные - от имени простого юзера, который при всем своем желании не может сделать ничего, что бы представляло опасность для системы.

Сочетание реальных многозадачности и "многопользовательности" делает работу в системе Linux особенно интересной. Можно одновременно:
- от имени суперпользователя запустить процесс компиляции ядра системы;
- от имени простого юзера обработать какой-нибудь пятидесятимегабайтный графический файл;
- и, чтобы не скучно было ждать, развивать свою империю в пошаговой стратегии типа "Call to Power".

Главное во всем этом деле - не забывать, что многозадачность в Linux является абсолютно реальной и никакой связи между работой программы и "активным окном" не существует. Это я к тому, что если игры real-time вы предпочитаете пошаговым стратегиям, надо не забывать включать паузу при переходе в окно другой программы, а то за время вашего отсутствия вас, скорее всего, разобьют. С другой стороны, и помимо игр вам будет чем заняться...


Аргумент четвертый. Количество качественного софта, работающего под управлением Linux, воистину огромно. Наиболее весомый довод, приводимый сторонниками Windows в пользу своей излюбленной системы заключается в том, что при всех ее недостатках она имеет одно признаваемое якобы всеми преимущество: количество качественных прикладных программ, которые работают под управлением этой системы, значительно превосходит тот же показатель у всех остальных систем, включая Linux.

Но даже если рассматривать вариации на тему Word, Photoshop и так далее как полноценные оригинальные программы, то следует признать, что данный тезис верен с точностью до наоборот. Все дело в том, что поборники "самой операционной системы в мире" ошибочно отождествляют обилие пиратских дисков на рынках с количеством прикладных программ.

Пользователь Linux изначально избавлен от хождения по рынкам благодаря тому, что весь необходимый софт уже входит в состав практически любого дистрибутива. А что касается их количества, то одно то, что простое перечисление прикладных программ дистрибутива ASPLinux-7.2 занимает четыре довольно увесистых файла, говорит сам за себя. Понятно, что такое количество программ просто не может быть "про одно и то же" и это именно тот случай, когда количество переходит в качество и приводит к тому, что...


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

Кстати говоря, именно в системе Linux делались наиболее сложные эффекты в "Титанике". Вы можете инсталлировать один из интегрированных офисных пакетов и получить прекрасный инструмент для работы с деловой документацией, а можете реализовать издательскую систему на базе языка TeX - мощного инструмента для написания научных работ. Школьники могут писать небольшие программы на Pascal при помощи компилятора Free Pascal, а научные сотрудники - создавать серьезные продукты практически на любом языке программирования, который существует на свете.

Люди, трепетно относящиеся к собственному здоровью, могут существенно сберечь свое зрение и работать исключительно в текстовом режиме, а ценителям графического интерфейса предназначены оконные менеджеры на любой вкус и темперамент. Однако авторы программ - человеки, а человеку свойственно ошибаться. Не свободен от ошибок и Linux, но...


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

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

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

Существует, в конце концов и полноценный коммерческий UNIX, к которому также применимо все сказанное выше. Чем же еще хорош Linux?


Точка зрения #2.
Экономико-юридическая

Горячо любящая всех своих поклонников фирма Microsoft предлагает им довольно скучный выбор: либо плати деньги, либо становись вором. Со всеми вытекающими во втором случае последствиями в виде административной и уголовной ответственности еще в этой жизни. Вполне возможно, что для домашнего пользователя все это пока не особо актуально. А вот что касается пользователей корпоративных, то за них вроде уже взялись. И пример наших братьев-украинцев лишний раз подтверждает то, каких успехов в области искоренения пиратства может достичь государство, стоит ему только захотеть. Так что не за горами тот день, когда количество вариантов сократится до одного - платить. Или выбирать Linux.


Аргумент седьмой. Linux можно получить практически даром. С точки зрения GPL совершенно безразлично, каким образом вам достался дистрибутив с Linux. Вы можете его купить, скачать из Сети или просто взять у приятеля. С точки зрения закона, во всех случаях вы будете являться абсолютно законным владельцем и можете использовать операционную систему так, как считаете нужным. А научиться ее использовать, я считаю, просто необходимо, так как...


Аргумент восьмой. Знание Linux востребовано добросовестным работодателем. Еще один аргумент майкрософтовцев заключается в том, что при устройстве на работу обычно требуется умение работать на персональном компьютере. Под этим самым умением обычно подразумевается знание Word, Excel и прочих программ от Microsoft. Однако и это не совсем соответствует действительности. В случае, если данный джентльменский набор приобретен легально, то надеяться на процветание фирмы вряд ли стоит.

Да и платить немалые деньги только за то, чтобы набирать тексты да отправлять-получать электронную почту - при условии, что все это можно получить практически даром - наивысшей степени пижонство. Правда, мне могут возразить, что реальная стоимость владения системой Linux ненамного ниже, чем у Windows, - прежде всего по причине более высоких заработных плат персонала, знающего Linux.

Так-то оно так, но я глубоко убежден, что платить деньги своим сотрудникам все же намного выгоднее, чем чужому дяде. Думаю, что и эти самые сотрудники не будут уж очень сильно мне возражать. Но это все теория, на практике же вам скорее всего попадется сверхэкономный работодатель с пиратской системой и ворованным Microsoft Office. И нельзя быть уверенным в том, что следующей статьей экономии у этого работодателя будет ваша заработная плата. К сожалению, у нас в стране таких пока большинство. Но так будет не всегда. Либо уже не будет никак. Очень хочется верить, что наше правительство ясно представляет, какую угрозу обществу несут подобные "капиталисты". Лично я убежден, что на смену им придут совсем другие люди и значение Linux в нашей стране существенно вырастет.


Аргумент девятый. Linux - наиболее динамично развивающаяся система в мире. Несмотря на то, что система Windows является на сегодняшний день наиболее распространенной операционной системой для настольных компьютеров, процент Linux-станций продолжает расти, что не может не вызывать определенных опасений со стороны софтверного монстра. Корпорация Microsoft даже выпустила методическое пособие, посвященное деинсталляции Linux и замене его системой собственного производства.

Несмотря на это, программы поддержки Linux приняли "гиганты железа" IBM и Hewlett-Packard. Правительства Китая и Кореи проводят политику, направленную на продвижения Linux в своих странах. Мексика всерьез собралась перевести на Linux всю систему образования. Под управлением Linux работает более половины всех серверов Мировой Сети. Кстати, наиболее любознательные могут выяснить, какую операционную систему использует такой завидный работодатель, как российский Сбербанк. А людей, которые знают и применяют Linux, пока в нашей стране не так уж и много, поэтому...


Аргумент десятый. Имеет смысл стать одним из пользователей Linux как можно раньше. Современная экономика устроена таким образом, что фактор "в нужное время и в нужном месте" играет далеко не последнюю роль. Многое в разработке и продвижении операционной системы Linux уже сделано, но многое еще предстоит сделать. И вы можете не просто наблюдать за процессом "пингвинизации", но и принимать в этом процессе самое непосредственное участие.

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

Только не следует забывать о GPL, которая не позволяет вам передать покупателю меньше прав по сравнению с тем, что вы получили сами. Заработать путем ограничения прав потребителя не удастся никому, в том числе и вам. Да это и к лучшему, ведь Linux - это система для свободных людей. Именно поэтому идеология Open Source не ограничивается только написанием программ с выполнением определенных условий. Для многих людей знакомство с Linux привело к изменению самого стиля жизни (ага, длинные волосы и вчерашние сосиски - шутк. ред.).


Точка зрения #3.
Эмоционально- мировоззренческая

Когда я задумываюсь о главном принципе, на котором построено Linux-сообщество, мне сразу приходит в голову фраза "От каждого - по способностям, каждому - по потребностям". Причем термин "Linux-сообщество" придумал, конечно, не я. Этот термин является общепринятым, обозначая всех, кто использует эту операционную систему. Стоит над ним задуматься. Не множество клиентов, не ассоциация покупателей, а именно сообщество, вступить в которое волен каждый из нас. В этом сообществе нет начальников и подчиненных, нет главных и второстепенных, а есть просто люди.

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


Аргумент одиннадцатый. Каждый пользователь Linux является владельцем своей системы. Представьте себе человека, который испытывает неприязнь к слову "правка". Ну не нравится ему это слово, и все тут. И решает этот человек убрать изо всех программ на своем компьютере это самое слово, заменив его на более удачное с его точки зрения определение "модификация". Возможно, что это желание может показаться странным, но уж никак не противозаконным. Однако если этот самый человек использует систему Windows, то у него, скорее всего, ничего не получится, а если и получится, он автоматически перестает быть законопослушным гражданином. Воистину странно!

Я думаю, что, если я вдруг решу перекрасить свои джинсы "Diesel" в зеленый цвет и вдобавок обрезать их до колен, вряд ли господин Ренцо Росси прибегнет в отношении меня к судебному преследованию. Так почему же вполне невинное желание Дмитрия Склярова поковыряться в приобретенной за честно заработанные деньги программе закончилось для него столь плачевно? И что предосудительного в том, чтобы обнаружить ошибку в программе и сообщить о ней автору программы и остальным пользователям? Слава Богу, в мире Linux таких проблем просто не существует.


Аргумент двенадцатый. Вы станете одним из членов Linux-сообщества. Да-да, именно сообщества единомышленников, а не ассоциации потребителей или союза покупателей. Причем ваши имущественные права на владение вашим Linux эквивалентны правам самого Линуса Торвальдса. И если вы решите что-то подправить в какой-либо программе, то вам будут только благодарны все, включая автора этой программы. А если что-то не будет получаться, то вам всегда помогут, подскажут и объяснят. Поэтому надо больше спрашивать. Люди знают ответ на многие ваши вопросы. Однако следует помнить, что лодырей и нахалов здесь не особо жалуют.

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


Аргумент тринадцатый. Ни одна система в мире не может сравниться с Linux по количеству общедоступной документации, находящейся в Сети. Причем авторами этих документов являются не профессиональные запудриватели мозгов с целью увеличения объемов продаж, а такие же пользователи, как и вы сам. Очень даже возможно, что язык многих из этих документов весьма далек от академического, но за каждой строчкой стоит самое главное - личный опыт автора документа. Кстати, с этим самым автором можно легко связаться. Свобода, видите ли, не способствует развитию анонимности. Вероятность того, что автор вам ответит, также весьма высока, так что вполне возможно, что очень скоро у вас появится много хороших знакомых, с которыми вы будете регулярно переписываться...

Аргумент четырнадцатый. Линуксоиды - довольно милые и общительные люди. Вполне возможно, что в вашем городе уже существует Linux User Group. Группа пользователей Linux - это коллектив, который объединяет наиболее активных и общительных линуксоидов. О существовании этой группы в вашем городе можно узнать по адресу http://www.lug.ru/.


Аргумент пятнадцатый: "...пусть никто не уйдет обиженным" (А. и Б. Стругацкие). И каждый найдет себе занятие по душе. Если вы программист, то вас ждут еще не написанные программы и не исправленные баги. Если вы владеете английским языком, то к вашим услугам горы непереведенной документации. Если ваша деятельность как-то связана с юриспруденцией, то масса сложных и спорных вопросов ждет вашего толкования.


В путь?

Даже самые великие дела начинаются с самых первых шагов. Хотя бы попытайтесь сделать эти первые шаги и, может быть, ваше мнение изменится в пользу альтернативной операционной системы. Итак, найдите дистрибутив ОС, тем или иным способом получите его в личное пользование, вставьте в устройство для чтения компакт-дисков диск под номером один и перезагрузите компьютер.

Инструкция по установке Ubuntu Edgy на USB флешку

Для установки нашего корманного линукса от нас потребуется:

1. USB flash drive размером от одного гигабайта
2. Немалое количество трафика для загрузки iso-образа Ubuntu 6.10 Edgy
3. Немножко времени и терпения

Шаг 1. Подготовление
Вставьте USB флешку размером в 1GB или больше в соответствующий разъем. Далее все действия будем проводить с правами супперпользователя. Для этого откройте терминал/консоль, и наберите:
sudo su

Для просмотра всех доступных дисков/разделов наберите:
fdisk -l
ВНИМАНИЕ!!! В моем случае этим устройством оказалось /dev/sdb и далее оно будет везде упоминаться. Поэтому, следуя шагам данной инструкции, не забывайте его изменять на ваше, чтобы к примеру не отформатировать или изменить случайно таблицу разделов на вашем SATA диске.
umount /dev/sdb1
fdisk /dev/sdb

Шаг 2. Удаление существующих разделов
Для просмотра существующих разделов нажмите P, и D для их удаления. Далее нажмите P снова, и если разделы остались, то повторите этот шаг заново.

Шаг 3. Создания первого раздела
Для создания нового раздела нажмите N и, P для создания главного раздела (primary). Нажмите 1 для создания первого раздела и, enter для использования первого цилиндра по умолчанию. Установите размер раздела введя +750M и, сделайте этот раздел актикным нажав A.
Далее нажмем 1 для переключения в первый раздел, и T для изменения файловой системмы, после чего нажмите 6 для выбора FAT16.

Шаг 4. Создания второго раздела
Для создания нового раздела нажмите N и, P для создания главного раздела (primary). Нажмите 2 для создания второго раздела, далее enter для использования первого доступного цилиндра и еще раз enter для использования последнего цилиндра. После чего нажмите W для сохранения новой таблицы разделов.

Шаг 5. Форматирование разделов
Отмонтируйте флешку:
umount /dev/sdb1 и отформатируйте разделы:
mkfs.vfat -F 16 -n USB /dev/sdb1
mkfs.ext2 -b 4096 -L casper-rw /dev/sdb2
exit
После проделанных операций извлечите флешку из разъема и, вставьте её заново.

Шаг 6. Установка syslinux
sudo apt-get install syslinux
sudo apt-get install mtools
syslinux -sf /dev/sdb1

После чего загрузите usyslinux.tar и разархивируйте содержимое архива на ваш USB раздел.

Шаг 7. Инсталяция
Скопируйте следующие файлы с Live CD на ваш USB раздел:
cd /cdrom

cp -rf casper disctree dists install pics pool preseed .disk isolinux/* md5sum.txt README.diskdefines ubuntu.ico casper/vmlinuz casper/initrd.gz install/mt86plus /media/usb/

Шаг 8. Перезагрузка
sudo init 6 Перезагрузите ваш компьютер, и не забудьте включить поддержку USB устройств в BIOS-е. А также можете установить приоритеты бута (boot priority) на загрузку с USB-HDD или USB-ZIP.

Источник: http://www.pendrivelinux.com/usb-ubuntu-tutorial-for-linux-users/
Немного другая трактовка: http://linuxlife.net/170-sozdanie-zagruzochnojj-fljeshki-s-ubuntu-8.04.html
А вот еще интересная версия: http://aboutubuntu.ru/content/how-to-install-ubuntu-from-usb-drive

22 причины для перехода на Linux.

1. Причина первая, она же главная. Будучи свободной системой, Linux доступна пользователям бесплатно. «Ось» можно без проблем скачать из интернета или заказать диск или бокс по почте по совсем тривиальной цене. Одна копия операционной системы может быть установлена на неограниченном количестве компьютеров безо всяких условий.

2. Поскольку код Linux — открытый, система может быть свободно модифицирована и распространяться даже на коммерческой основе. Возможность свободно экспериментировать с исходным кодом операционной системы, принимая во внимание только свои цели, сделала Linux столь полезным и эффективным решением для ряда крупных компаний, таких как Google.

3. Особых проблем с технической поддержкой у пользователей Linux тоже не наблюдается, так как ответ на интересующий вас вопрос о работе ОС можно свободно получить на форумах или сетевых конференциях. Многие юзеры уверяют, что такая техподдержка ничуть не хуже той, что можно получить за деньги. Конечно, существует и платная техподдержка Linux. В подобные услуги включается тщательная настройка системы, установка и апгрейд новых программ с целью защиты от хакеров, исправления багов. К счастью, последние в Linux встречаются редко.

4. Шанса, что техническая поддержка Linux когда-то прекратится, почти нет, ибо открытый код привлекает огромное количество пользователей: многие из них с радостью помогут своим «сопингвинщикам» решить появившиеся проблемы. Кроме того, всегда найдутся люди, которые будут помогать советами профессионально, т.е. за деньги.

5. Не стоит бояться, что Linux в будущем устареет. Дело в том, что UNIX, на котором строилась ОС, тестировался и оптимизировался на протяжении 35 лет, доказав крайнюю эффективность, надёжность и безопасность. Работа над Linux не прекращается ни на секунду, и новые версии операционной системы, как говорится, «держат марку».

6. Пользователи «Линукса» не подвергаются тоталитарному давлению со стороны правообладателя операционной системы, ибо его — этого самого правообладателя — не существует. В качестве противоположного примера можно привести действия Microsoft: компания намеренно перестаёт поддерживать старые версии ОС, тем самым вынуждая пользователей покупать новые (иногда бывает, что приходится покупать новое «железо» в связи незапланированным обновлением ОС). Кроме того, новые версии «Линукс» также распространяются абсолютно бесплатно.

7. Все, что связано с переходом на новую версию ОС, обойдётся пользователю в сущие копейки. Сама новая версия бесплатна — это раз. Во-вторых, обучающие программы, установка и т.д. стоят недорого. В-третьих, Linux — не слишком требовательна к мощности компьютера, поэтому апгрейд оборудования — если он вообще потребуется — тоже много средств из бюджета не вытянет.

8. Компании, в которых насчитываются сотни тысяч компьютеров, перейдя на Linux, как страшный сон вспоминают, что такое следить за соответствием лицензии каждого из компонентов ПО на каждой машине. Ведь для того чтобы проверить это самое соответствие лицензии ПО по всем пунктам EULA (End-User License Agreement — лицензионное соглашение конечного пользователя), требуется нанять персонал с полной занятостью и, как ни странно, платить ему за это деньги. Кроме того, этим компаниям уже не страшны внезапные «набеги» сотрудников BSA (Business Software Alliance — Альянс производителей программного обеспечения для коммерческих организаций; создан в 1988 году компанией Microsoft), которым надо обязательно проверить лицензию на MS Windows, MS Office и т.д. Найдя малейшие несоответствия — а они их найдут — забабахают внушительные штрафы.

9. Linux давно славится тем, что мало подвержен воздействию вирусов, троянов, червей, программ-шпионов и остального вредоносного ПО. Секрет успеха разработчиков кроется в том, что они изначально сфокусировали свои усилия на безопасности системы, а не думали об этом, когда появились реальные проблемы. Вот, например, один из оригинальных способов защиты: пользователь Linux не авторизован в системе как администратор, тем самым защищая жизненно необходимые системные файлы даже в случае проникновения злоумышленника. К тому же, самые популярные версии Linux идут вместе со встроенным фаерволлом, показавшим очень высокую эффективность работы за все это время. Наконец, не истощающая себя тема открытости кода снова играет нам на руку: тысячи людей по всему земному шару заняты поиском уязвимых мест ОС, и проблем с заплатками нет абсолютно никаких.

10. В работе «Линукса» почти никогда не происходит фатальных сбоев, после которых приходится перезагружать компьютер. Если вспомнить про крупные компании, то и тут они в безусловном выигрыше, ведь буквально пара минут бездействия всей связанной системы может вылиться в огромные убытки. Причину снова отгадать не трудно: с самого начала разработчики старались сделать работу ОС максимально стабильной и удобной, и можно с уверенностью сказать, они своего добились.

11. Пока что Linux не может тягаться с Windows по количеству созданных и хорошо отлаженных программ. Однако очень много людей заняты исправлением ситуации. В будущем программ для самых различных нужд будет появляться все больше и больше. Мало того, что большинство программ под «Линукс» распространяется бесплатно, так по функциональности, надёжности и мощности некоторые из них не уступают своим аналогам в среде Windows. Стоит уже избавляться от стереотипа - дескать «под Линукс ничего не найдешь!».

Однако необходимо сделать ремарку: люди, профессионально занятые в работе с музыкой, фото или видео, вряд ли перейдут с Mac OS или Windows на что-то другое, по крайней мере пока.

12. Выбор среди дистрибутивов Linux внушительный — несколько сотен версий, и каждая наделена своими специфическими характеристиками. При этом все системы совместимы друг с другом. Это позволяет пользователю выбрать ту версию, которая подходит ему больше всех. К тому же, если один из поставщиков Linux выйдет из игры, то ощутимого урона распространению операционной системы это не принесёт — помимо него, есть ещё много поставщиков. Нельзя не указать на тот факт, что подобная ситуация создаёт здоровую конкуренцию, а это отражается на повышении качества и производительности. Конечно, для многих выбрать нужный дистрибутив из нескольких сотен окажется трудно. В таком случае, выбрав одну из самых популярных версий, вроде Red Hat или SuSE, вы не прогадаете.

13. Как ещё одну особенность Linux надо отметить возможность очень тонкой настройки. Вопреки сложившемуся мнению настроить Linux под себя не вызовет никаких проблем у мало-мальски опытного юзера. Во время установки можно указывать самые различные параметры, которые помогут вам выбрать ту конфигурацию, которая подходит именно вам. Будь то компьютер исключительно для работы, медиа центр, ноутбук, веб-сервер, сервер для хранения данных или даже маршрутизатор сети. От пытливого пользователя не скрыты и настройки внешнего вида операционки, который можно настроить в тысячах вариаций. Мечтаете об Apple Mac или до сих пор ностальгируете по Windows? В Linux все это можно воссоздать визуально. И это благодаря открытому коду, который предоставляет пользователю поистине безграничные возможности.

14. В «Линукс», как и во всем остальном бесплатном софте, формат используемых файлов — открытый. В отличие от файлов закрытого формата, они соответствуют общепринятым стандартам и могут применяться любым разработчиком программного обеспечения для создания совместимых с ними программ. Благодаря использованию открытых форматов решается проблема программной обособленности, когда файлы имеют закрытое расширение и могут быть использованы только определённым ПО. К тому же, пользователю больше не стоит беспокоиться о том, что ценные данные могут быть утеряны, если вдруг разработчики, создавшие ПО, выйдут из бизнеса или прекратят поддержку своих ранних продуктов.

15. Linux славится своей превосходной совместимостью с другими операционными системами. Например, «Пингвин» может без проблем считывать, записывать, копировать, стирать и производить другие действия с файлами, которые расположены на разделах жёсткого диска, где установлена Windows. Кроме того, в Linux можно использовать клиенты Windows и даже напрямую работать с программами, заточенными главным образом под ОС от Microsoft. А Windows не только не способна работать с разделами HDD, на которых записаны другие операционные системы, но и не может форматировать эти диски для последующей установки другой оси. Кстати, Linux может загружаться просто как Live-CD — т.е. установки, фактически, не требует никакой.

16. Если это как-то может повлиять на ваш выбор, в США ещё не было ни одно случая, когда в Федеральный суд подавались антимонопольные иски против «вероломного» использования Linux. Напротив, антимонопольное соглашение было создано для регулирования деятельности и даже уничтожения экономических монополий ради свободной конкуренции на рынке. Linux же, как мы уже поняли, не является монополией вовсе, ибо никому не навязывается: все по собственному желанию

17. При использовании Linux, у вас отпадёт необходимость в серьёзном апгрейде железа, если вы решились установить более свежую версию. Даже на старых компьютерах, благодаря очень грамотно написанному коду, Linux будет работать безо всяких запинок.

18. «Линукс» хорошо масштабируется и может работать на системах не только на основе решений Intel или, скажем, AMD. Его можно устанавливать практически на все электронные устройства, начиная с суперкомпьютеров и роботов, заканчивая медицинским оборудованием, мобильными телефонами и даже наручными часами.

19. Для технических вузов Linux становится настоящей находкой. Открытость кода предоставляет огромные возможности для изучения устройства компьютера, а не только того, как с ним нужно работать. Многие преподаватели действительно считают, что учащимся намного полезнее изучать основы вычислительной техники, которые будут служить для создания все более совершенных компьютеров в будущем, а не практиковаться в таких программах, как Microsoft Word или Microsoft PowerPoint, которые с каждой новой версией изменяются, а через несколько лет устаревают.

20. Правительственным учреждениям Linux, как и другое бесплатное ПО, обеспечивает т. н. прозрачность программного обеспечения, так как информация в Linux хранится в открытых форматах, соответствующих общепринятым стандартам. В противоположность этому выступают, соответственно, закрытые форматы, используемые многими коммерческими программами. Вообще, подобная прозрачность ПО говорит о том, что в компании нет скрытых данных, и доступ ко всей информации имеют абсолютно все пользователи, и им при этом не нужно применять дорогостоящие программы, которые смогут понять нужные форматы.

21. Есть мнение, что во многих платных программах существуют определённые «дыры», через которые хакеры конкурирующей компании или даже правительственной организации могут завладеть ценными данными. Так вот, вероятно, не будет преувеличением сказать, что Linux — настоящая головная боль для хакеров, ибо проникнуть в систему через лазейки почти невозможно из-за того, что исходный код системы полностью доступен для сканирования на случаи взлома.

22. Linux, в отличие от Windows, не требует дефрагментации дисков. Пусть этот процесс не столь сложен и накладен для выполнения, так как его надо проводить не очень часто, но факт есть факт — для хорошо отлаженной операционки, вроде Linux, дефрагментация не нужна.

Стихотворение "Качаю Линукс"

Да, не идеально, знаю, но всё-же...

Качаю Линукс, а Винда,
Уйдёт в небытие, наверно
Осталось Линукс ведь скачать,
Потом послать Винду навечно...

Не будет больше окон тех,
Кои бесили много лет,
Не будет больше тех обид,
Экранов синих, той фигни,

Не нужен будет ВинАпдейт,
"Ишак", ВинМедиа, ВордПэд
И не увижу кнопку "Пуск",
ВинЛайв, "Паук" и Аутглюк.

Осталось Линукс ведь скачать,
Осталось ведь совсем не долго,
Чтобы Винду одну послать
Послать и далеко, надолго...

среда, 28 января 2009 г.

10 трюков в командной строке, о которых вы не знали.

1. Простой способ перехватить вывод и ошибки


Хотите направить stdout и stderr в один файл?
command &> file
Может вы разбираетесь в некой программе при помощи strace, и желали бы видеть системные вызовы вместе с ошибками программы?
strace badapp &> errors_and_output

Плюсы: легко запоминается, и проще чем «послать ошибки на вывод, а затем всё это в файл».
Совместимость: любой линукс.

2. Распараллеливание циклов


Почти любому администратору знакома мощь циклов — как сделать что-либо для одного, сотни или тысячи пользователей, файлов, машин, процессов, или чего угодно. Большинство строят циклы последовательно, так что каждое задание завершается перед стартом следующего. Но можно посылать каждое задание в фон, и не ждать его завершения:

for HOST in $(<>

Может вам нужна куча ssh-туннелей одновременно:

for HOST in $(<>

Иногда вы не хотите видеть вывод сразу — в этом случае, сохраните по лог-файлу на каждой машине, а с помощью другого цикла потом их соберите.

Плюсы: сберегает метрическую туеву хучу (⅔ имперской туевой хучи) времени ожидания завершения.
Совместимость: любой линукс.
Минусы: у баша должны быть ограничения на количество одновременных задач, но пока автор (и переводчик) в них не упёрся.


3. Ловля утечек памяти через крон


Утечки памяти в линуксе нечасты, но бывают, особенно с бета-дистрибутивами или самодельным софтом. Часто выявить программу с подтёком не так-то просто. В линуксе есть программа Out-Of-Memory, позволяющая отыскивать и убивать такие процессы, но пока она сработает, система уже может начать сильно тормозить — настолько, что вы теряете терпение и перезагружаетесь.

Обычный способ узнать потреблении памяти программой это запуск top (или его графического эквивалента, наподобие System Monitor), и проверка Размера Резидентной Части (Res или RSS) интересующих процессов (память, отведённая программой, вам не нужна — утечки происходят от использования, а не от отведения, и программа может отвести (allocate) кучу памяти без вреда для системы). Большинство граждан не в курсе, что top можно запускать пакетно, что означает, что можно использовать cron и top для создания простого отчёта об использовании программой памяти:

  • запустите top
  • кнопками < и > добейтесь сортировки процессов по RSS (размер резидентной части)
  • нажмите W для записи конфигурации в файл
  • добавьте крон-задачу:

    crontab - <<< '*/15 * * * * top -n 1 -b'


    И каждые 15 минут будете получать письмо с выводом топа.

    Плюсы: куда как проще чем ставить софт наподобие SAR.
    Совместимость: любой линукс.
    Минусы: некоторые ограничения на количество одновременных задач.


    4. stdin прямо из командной стоки


    Не поняли, что это была за фигня (<<<)? Баш позволяет слать процессам стандартный ввод прямо из командной стоки. Плюсы: позволяет писать команды с командной стоки, даже для альтернативно дружественных программ, которые требуют ВСЁ со стандартного ввода. [Грозит кулаком MySQL-ю].
    Совместимость: bash 3 и новее.
    Минусы: всё ещё немало систем с bash 2.


    5. Установить первичный пароль, который надо поменять


    Многие организации имеют хорошие и надёжные политики паролей. Пароли хранятся на виндозных машинах. Линукс либо не не покрывается политикой, либо политика не соблюдается — люди не в курсе авторизации под линукс (большинство граждан не понимают PAM, а линуксовые админы часто не осознают, что линукс может чудесно авторизоваться через Active Directory), и было время, что разработчики OpenSSH не любили PAM (это с тех пор поменялось).

    Поставить пароль, который должен быть поменян при первом логине:

    umask u=rw,go=
    openssl rand -base64 6 | tee -a PasswordFile | passwd –stdin joe
    chage -d 0 joe

    Пароль сохранён в файл PasswordFile, который доступен для четния только под своим акаунтом. После этого сообщите начальный пароль пользователю по надёжному каналу, вроде телефона или зашифрованного письма (Переводчику приходилось встречать систему, при которой начальный пароль высылался по обычному емэйлу. Пикантность была в том, что это был не фейсбук и не одноклассники. Это был онлайн-банк.)

    Плюсы: пользователи не будут с начальным паролем бесконечно.
    Совместимость: любой линукс с обновлённым OpenSSH (если ваши пользователи заходят в первый раз по SSH). РедХат утверждает, что это всё ещё не работает в RHEL 3/4, но после приложения их обновлений, всё хорошо.
    Минусы: нет.

    6. Простое добавление публичного ключа на удалённый хост


    Для логина но новый хост по ключу надо сначала на этот хост записать публичную часть ключа. Конечно, это можно делать вручную, но вскоре это надоедает (и почему у ssh нет authorized_keys.d…), а ведь для этого есть специальная утилита:

    ssh-copy-id -i .ssh/id_rsa.pub hostname


    Введите пароль последний раз, ssh скажет:

    Now try logging into the machine, with “ssh ‘hostname’”, and check in:

    .ssh/authorized_keys

    to make sure we haven’t added extra keys that you weren’t expecting.

    Попробуйте. До свидания, пароли!

    7. Распаковка RPM без дополнительного софта


    На дебиано-подобных дистрибутивах это не проблема, потому что .deb файлы есть просто .ar архивы. Каждое руководство по РедХату упоминает rpm2cpio (идёт по умолчанию с rpm), но если честно, я не способен запомнить синтаксис cpio, античный формат, сейчас использующийся только, мм, пожалуй, только рпм-ом.

    Эта команда ставит пакет во временную директорию, но не меняет RPM базу (только во временной диркетории, которую вы потом сотрёте). Поскольку в ней нет больше ничего, мы запрещаем зависимости и скрипты.

    mkdir /tmp/deleteme

    rpm -ivh –root /tmp/deleteme –nodeps –noscripts package.rpm


    8. Изменился ли файл с момента поставки


    Это простой способ узнать, не менялся ли файл из пакета. Сперва определите пакет, в который входит файл:
    dpkg -S /etc/foo/foo.conf

    rpm -qf /etc/foo/foo.conf

    Потом разверните оригинальный пакет при помощи tar (DPKg) или трюка с rpm, данного выше (RPM), и запустите:
    diff /etc/foo/foo.conf /tmp/deleteme/etc/foo/foo.conf

    И найдите разницу.

    Плюсы: быстрое нахождение плохих конфиг-файлов (strace тут тоже может пригодиться)
    Совместимость: любой линукс.
    Минусы: у вас остаётся больше времени на работе, чтобы читать Digg.

    9. — Первым делом отключите связь... Ало? ало? идиоты!


    Ковыряетесь в файрволе удалённо? Нервно как-то, правда? Не то нажал, и связь потеряна.

    Почему бы не откатить ошибку? Зарядите откат того, что вы собираетесь менять.
    at now + 5 minutes <<< 'cp /etc/ssh/sshd_config.old /etc/ssh/sshd_config; service sshd restart'

    Если ошибётесь, процесс выполнится и восстановит установки. А если не ошибётесь, запустите atq, и atrm <номер задачи> для удаления.

    Плюсы: прикрывает задницу на случай ошибки.
    Совместимость: любой линукс, в котором разрешён at, а он обычно да.
    Минусы: помнить, что это надо сделать перед рискованным действием.

    10. Открыт ли порт


    Хотите проверить, запущен ли сетевой сервис? Netcat с опцией -w (сколько ждать) будет полезен:
    nc -w 3 server ssh <<< ' '

    Соединиться на ssh порт на хосте по имени server, ждать 3 секунды перед тем, как послать, мм, ничего, и закрыть соединение. Был ли порт открыт, будет отражено в статусе nc.
    if nc -w 3 localhost 22 <<< ''&> /dev/null
    then
    echo 'Port is open'
    else
    echo 'Port is closed'
    fi
  • Консоль для новичка

    Для того, что бы попасть в консоль можно нажать Ctrl+Alt+F1, а что бы вернуться обратно в свою графическую среду - Alt+F7. Либо просто воспользоваться предложенным графически решением в вашем главном меню.

    И так дорогой читатель - ты вошел в консоль. Первым делом, что бы чувствовать себя уютнее надо оглядеться, для этого мы выполним команду pwd:
    vir@home:~$ pwd
    /home/vir

    Этой командой мы определили в какой директории мы сейчас находимся (т.е. какая директория в данный момент рабочая). В моем случае - это моя домашняя директория. Кстати, pwd, если мне не изменяет память расшифровывается именно как - print work directory (распечатать/вывести на экран рабочую директорию)

    Далее было бы не плохо узнать, а что у нас в ней есть? Для этого воспользуемся утилитой ls:
    vir@home:~$ ls
    Images Other Work Рабочий стол

    После выполнения команды ls, мы видим список файлов и директорий находящихся в той самой (/home/vir) рабочей директории. А называется команда ls, от сокращеного list (список)
    Наверное, именно здесь стоит заметить, что большинство команд может использоваться с ключами (опциями) и параметрами. Опять же давайте разберемся на примере:
    vir@home:~$ ls -l
    total 0
    drwxr-xr-x 3 vir vir 80 2008-07-06 11:30 Images
    drwxr-xr-x 3 vir vir 72 2008-07-06 14:30 Other
    drwxr-xr-x 3 vir vir 80 2008-07-06 11:59 Work
    drwxr-xr-x 2 vir vir 48 2008-07-15 11:41 Рабочий стол

    Здесь я использовал ключ -l, который дал знать утилите ls, что я хочу развернутого ответа, т.е. в данном случае помимо списка директорий я так же получил такие данные как: аттрибуты прав, владельца, дату последнего изменения и прочее. Теперь попробуем передать команде ls параметр:
    vir@home:~$ ls /var/
    backups cache crash games lib local lock log mail opt run spool tmp

    В виде параметра я передал директорию /var/. Т.е. результатом команды было отображение всех директорий и файлов, которые находяться в директории /var. Таким образом можно заметить, что не обязательно находиться в конкретной директории, что бы просмотреть ее содержимое.

    Теперь не отходя далеко от команды ls, можно рассказать и о путях к файлам и директориям в Linux'e. Пути в Linux'e могу быть относительными и абсолютными. Корнем (родителем) всего дерева директорий, является директория "/". Именно от нее все и начинается (например /home/vir). Теперь на примере:
    vir@home:~$ ls
    Images Other Work Рабочий стол
    vir@home:~$ ls Images/
    Wallpapers
    vir@home:~$ ls /home/vir/Images/
    Wallpapers

    Первой командой я опять просматриваю список директорий и файлов, которые находяться в моей домашней директории, одна из них - директория Images. Второй раз я просматриваю список файлов и директорий для Images пользуясь относительным путем, путь который начинается от моей рабочей директории (pwd). То есть находясь в директории /home/vir/ я могу указать относительный путь для Images. А в третьем примере я указываю полный (абсолютный) путь от корня (/home/vir/Images), который не зависит от моей рабочей директории.

    Что бы сменить свою рабочую директорию, будем пользоваться командой cd. Пример:
    vir@home:~$ cd Images/
    vir@home:~/Images$ pwd
    /home/vir/Images
    vir@home:~/Images$ cd /var
    vir@home:/var$ pwd
    /var

    Думаю здесь все понятно, единственное, что стоит сказать - это то, что бы подняться на одну директорию выше, нам не обязательно указывать ее жесткий путь, мы свободно можем воспользоваться двумя точками "..". Пример:
    vir@home:~/Images$ pwd
    /home/vir/Images
    vir@home:~/Images$ cd ..
    vir@home:~$ pwd
    /home/vir


    После того, как вы уверенно можете разгуливать по просторам файловой системы с помощью консоли, необходимо узнать собственно о её формировании. Предположим, что Вам понадобилось создать директорию, в этом случае воспользуйтесь командой mkdir.
    vir@home:~$ mkdir Test
    vir@home:~$ ls
    Images Other Test Work Рабочий стол

    В этом примере мы создали директорию тест, находясь в рабочей директории /home/vir. Однако, как я уже говорил многим утилитам можно передавать параметр, поэтому попробуем создать директорию указав для нее полный путь:
    vir@home:~$ mkdir /tmp/Test

    Здесь с помощью переданного параметра мы указали утилите, что бы она создала директорию Test в директории /tmp. Опять же вспомнив о ключах (опциях), которые можно передавать утилитам, и еще раз убедимся, что это крайне полезная возможность, например Вам необходимо создать директорию /tmp/Test/One/More, в данном случае у нас уже существуют директории /tmp и /tmp/Test, остается создать /tmp/Test/One и /tmp/Test/One/More. Пробуем:
    vir@home:~$ mkdir /tmp/Test/One/More
    mkdir: cannot create directory `/tmp/Test/One/More': No such file or directory

    Не получилось. Но не переживайте. Не получилось потому, что мы пытаемся создать директорию /tmp/Test/One/More, в то время, как директории /tmp/Test/One не существует. Можно конечно создать их по очереди, но зачем когда есть ключи? Воспользуемся ключем -p:
    vir@home:~$ mkdir -p /tmp/Test/One/More

    С помощью этого ключа мы создаем все недостающии в пути директории, если это необходимо. Да, кстати, не будет вредным информация о том, что mkdir сокращение от Make Directory (создание директории).

    С созданием директорий разобрались, теперь попробуем создать файл:
    vir@home:/tmp/Test$ touch file
    vir@home:/tmp/Test$ ls -l
    total 4
    -rw-r--r-- 1 vir vir 0 2008-07-15 21:41 file
    drwxr-xr-x 3 vir vir 4096 2008-07-15 21:38 One

    И так, с помощью команды touch мы создали в файл с именем file. Файл этот пустой, не занимает место на жестком диске. Вы спросите: "А как же понимать по выводу команды ls, где файл, а где директория?". Все очень просто, во первых во всех современных дистрибутивах команда ls является алиасом на команду ls --color=auto, а это значит, что директории и файлы подсвечиваются разными цветами (правда в разных дистрибутивах по разному). Второй способ это определить по выводу команды ls -l:
    vir@home:/tmp/Test$ ls -l
    total 4
    -rw-r--r-- 1 vir vir 0 2008-07-15 21:41 file
    drwxr-xr-x 3 vir vir 4096 2008-07-15 21:38 One

    Обратите внимание на букву "d", которую в примере я выделил красным цветом, она то и показывает нам, что One является директорией, а file с пустым аттрибутом (с черточкой).

    Перейдем к перемещению файлов и директорий. Для перемещения служит команда mv (сокращение от move (двигать)). Пример:
    vir@home:/tmp/Test$ mv file One/
    vir@home:/tmp/Test$ ls One/
    file More

    И так, мы переместили файл file из директории /tmp/Test в директорию /tmp/Test/One. Тут все просто. Если хотите переместить файл, и одновременно дать ему другое имя, то это необходимо четко указать:
    vir@home:/tmp/Test$ mv One/file ../moved_file
    vir@home:/tmp/Test$ ls
    moved_file One

    Здесь помимо того, что мы переместили файл file обратно в директорию /tmp/Test, так еще и задали ему новое имя moved_file.
    Ну и для окончательного понимания работы команды mv, покажу, что она может использоваться и просто для переименования файла (без перемещения):
    vir@home:/tmp/Test$ ls
    moved_file One
    vir@home:/tmp/Test$ mv moved_file new_name
    vir@home:/tmp/Test$ ls
    new_name One
    vir@home:/tmp/Test$

    Пойдем дальше... к копированию. Копировать файлы так же просто, как и перемещать. Принцип абсолютно такой же:
    vir@home:/tmp/Test$ cp new_name second_file
    vir@home:/tmp/Test$ ls -l
    total 4
    -rw-r--r-- 1 vir vir 0 2008-07-15 21:41 new_name
    drwxr-xr-x 3 vir vir 4096 2008-07-15 21:54 One
    -rw-r--r-- 1 vir vir 0 2008-07-15 21:59 second_file

    Думаю здесь все абсолютно понятно. И наверное вы уже догадались, что cp это сокращение от copy (копия).
    В ходе обучения мы с вами понасоздавали много ненужного (учебного) мусора. Что ж, пришло время все это подчистить. Начинали мы с Вами с домашней директории, туда и отправимся:
    vir@home:/$ cd ~
    vir@home:~$ ls
    Images Other Test Work Рабочий стол
    vir@home:~$

    Здесь мы перешли в домашнюю директорию и просмотрели, какой же мусор у нас там лежит. Да, кстати, для того, что бы быстро перейти в в свою домашнюю директорию (/home/имя_пользователя) достаточно воспользоваться алиасом "~".
    И так мы видим следы от наших проб - это директория Test, которая нам уже не нужна, и мы ее удаляем:
    vir@home:~$ rm -rf ~/Test

    Здесь я еще раз пользуюсь возможностью "~", это равносильно указанию абсолютного пути /home/vir/Test. Значит для удаления мы используем утилиту rm (сокращение от remove (удаление)). Ключи -rf - это моя привычка. А именно ключ -r означает - рекурсивно, то есть удалять все, что в этой директории включая ее саму. Если бы мы не использовали бы этот ключ при удалении директории Test, мы получили бы ошибку:
    vir@home:~$ rm -f Test
    rm: cannot remove `Test': Is a directory

    А ключ -f говорит нам о том, что нет необходимости каждый раз спрашивать нас о том, уверены ли мы, что хотим что-то удалить. Поэтому я привык использовать rm -rf, хотя не поощраю такое использование утилиты rm. Думаю теперь вы понимаете, что не следует слушать советы различных "гуру", говорящих вам, о том, что "rm -rf /" лечит от всех бед. Догадаться о значение этой строки теперь Вам не сложно.

    И еще, помните мы создавали тестовые директории и файлы в директории /tmp? Удалим их тоже:
    vir@home:~$ rm -rf /tm[Tab]p/T est/

    Что за странные " " спросите Вы? Я отвечу, таким образом я отобразил нажатие кнопки Tab, на вашей клавиатуре. То есть, я набрал rm -rf /tm затем нажал Tab, и о чудо! Остальные символы p/ добавились сами, затем я набрал просто большую букву T и снова нажал Tab, опять чудо! Символы est/ добавились сами! А все потому что в консоли кнопка Tab является незаменимым помощником-автодополнителем. Конечно в моем примере использование этой кнопки не очень сокращает время, но вы представьте, что у Вас существует директория fotografii-moey-lyubimoy-devushki. Что длиновато? Вот тут Вам и поможет Tab. Набираете foto, жмете Tab и все остальное дополняется само. А что если у Вас две дериктории или два файла, которые начинаются на "foto"? Тогда консоль Вам отобразит оба варианта, пока написаное выражение не будет совпадать только с одним. Пример:
    vir@home:~$ mkdir foto-moey-devushki
    vir@home:~$ mkdir foto-brata-Olega
    vir@home:~$ rm -rf foto-
    foto-brata-Olega/ foto-moey-devushki/

    Выдается два варианта, четко дав понять, что директорий начинающихся на "foto-" две. Дополнять пока между ними не будет разницы придеться вручную :). Ну про Tab я Вам объяснил, теперь удалим-ка ненужные директории:
    vir@home:~$ rm -rf foto*

    И опять фокусы, в виде каких-то звездочек (*). А это ничто иное как понятие регулярных выражений. Регулярные выражения тема довольно-таки сложная и мы в нее вдаваться не будем, а вот самостоятельно почитать о них, вам не помешает. Я же Вам объясню про звездочку - так как мы имели две директории со схожим началом "foto" мы можем удалить их одновременно указав только начало. Потому что звездочка (*) подразумевает под собой любое количество, любых символов. То есть дословно:
    vir@home:~$ rm -rf foto*
    Удалить все, что начинается на foto

    Еще пример со зведочкой, предположим у Вас в директории 10 файлов с расширением mp3, и 20 файлов с расширением ogg! Да, мы не любим пропиетарщину, поэтому удалим все mp3 файлы. Но по отдельности это сделать трудоемко, указывая название каждого файла, поэтому воспользуемся магической звездой:
    vir@home:~$ rm -rf *.mp3

    Думаю суть звезды теперь Вам понятна.

    Еще я бы хотел Вам рассказать о великой утилите man. man (сокращение от man (руководство)) позволяет читать руководство по утилитам, различным конфигурационным файлам и прочих вещей. Пользуемся ей так:
    vir@home:~$ man rm

    И у Вас появится руководство по утилите rm. Это незамения утилита, которая должна сопровождать Вас всю вашу сознательную жизнь в Linux'e.

    На сегодня пожалуй хватит. После этой лекции Вы можете не только ходить по просторам файловой системы (ФС), но и формировать её собственноручно. Помимо этого не забывайте фокусы с ~, *, .., Tab.

    Получение справки о командах

    man
    Описание команды или файла конфигурации. Синоним info. Описание листается стрелками, выход клавишей q.
    Пример: man fstab
    apropos
    Поиск по описаниям man.
    Пример: apropos iso

    Команды работы с файлами

    cd
    Смена текущего каталога. cd ~ или просто cd всегда переходит в домашний каталог текущего пользователя.
    Пример: cd /etc
    ls
    Выводит список файлов и каталогов. В отличие от dir подсвечивает файлы по типу. С параметром -l выводить дополнительную информацию о файлах: права, владельца, дату создания и т.д.
    ls без параметров выводит содержимое текущего каталога.
    ls /proc выводит все работающие процессы.
    mv
    Перенос файла.
    cp
    Копирование.
    rm
    Удаление файла.
    mkdir
    Создание каталога.
    rmdir
    Удаление непустого каталога.

    Права доступа к файлам и каталогам

    chown
    Смена владельца.
    chgrp
    Смена группы владельца.
    chmod
    Смена прав.
    Пример: сhmod -R 777 /var/www дает доступ всем ко всем файлам и каталогам ниже /var/www.

    Команды работы с драйверами устройств (модулями ядра Linux)

    lsmod
    Список всех загруженных модулей ядра Linux.
    insmod
    rmmod
    modprobe имя-модуля [параметры]
    Установка модуля, настройка его автозагрузки. Результат можно посмотреть в системном логе.
    Пример: modprobe radio-aztech io=0x350.
    modinfo имя-модуля
    Информация о модуле, в том числе и список параметров.
    modconf
    Удобная программа для просмотра всех модулей по категориям, включения и отключения модулей. По умолчанию как правило не установлена, в Debian, Ubuntu и Kubuntu устанавливается с помощью одноименного пакейджа командой apt-get install modconf.

    Редактирование файлов

    nano и pico — наиболее вменяемые редакторы, работающие в текстовом режиме прямо в терминале. Чтоб изменить файл /etc/fstab, например, надо набрать nano /etc/fstab. Выход из редактора CTRL+X. Редакторы vi и vim предназначены для работы слепым десятипальцевым методом и неудобны обычным пользователям.

    Другие полезные консольные программы и команды Linux

    hdparm
    Управление жесткими дисками и приводами компакт-дисков.
    Пример: hdparm -E8 /dev/cdrom снижение скорости вращения CDROM.
    watch
    Периодическое выполнение команды.
    Пример: watch -n 60 hdparm -E8 /dev/cdrom раз в минуту тормозить диск чтобы привод не разгонял его и не шумел во время просмотра DVD.
    pppconfig
    Простая и надёжная программа настройки Dial-Up выхода в Интернет по модему. pon, poff и plog — команды установления, разрыва и просмотра лога соединения соответственно.
    pppoeconf
    Аналогично, настройка выхода в Интернет через ADSL-модем.

    Суперпользователь root

    Обладает неограниченными правами. Использование прав суперпользователя необходимо при установке драйверов, смене важных параметров Linux. Пароль пользователя root обычно запрашивается при установке дистрибутива. Тогда сразу после установки в систему можно войти с указанным паролем и логином root.

    Если вход в систему выполнен под обычным пользователем, то получить права суперпользователя в конкретном экземпляре терминала можно командой su, после ввода которой необходимо ввести пароль суперпользователя. Вернуться к сессии обычного пользователя можно командой exit.

    Однако такие дистрибутивы как Ubuntu и Kubuntu не создают суперпользователя при установке. Войти под пользователем root или использовать su не удастся. Права суперпользователя в этих дистрибутивах можно получить командой sudo. Ее необходимо писать перед каждой командой, для которой требуются права суперпользователя. Например sudo nano /etc/fstab. После первой команды sudo необходимо ввести пароль текущего пользователя. Использовать sudo могут пользователи, состоящие в группе sudo или admin (в зависимости от дистрибутива Linux), что для первого пользователя Ubuntu и Kubuntu выполняется автоматически при установке дистрибутива.

    Особенности работы терминалов Linux

    Записанные в файл команды выполняются командой sh имя_файла.

    Стандартные команды в Linux отличаются от команд DOS и Windows -- обычно они короче. При работе с командной строкой как обычно мигающий курсор обозначает позицию ввода текста, командная строка начинается с текущего пути и имени компьютера, за которым следует символ $, % или #. Последний означает, что команды будут выполняться от имени суперпользователя root. Символ ~ означает путь к текущей домашней директории пользователя.

    Большинство команд в Linux, не требующих вывода информации пользователю, в случае успешного завершения вообще ничего не выводят на экран. Выводятся только ошибки и предупреждения в случае нарушения нормального выполнения команды. Т.е. в Linux действует общий принцип "молчит, значит работает".

    В любом терминале Linux стрелками вверх/вниз на клавиатуре можно листать историю команд, которая сохраняется между сеансами работы и различается для разных пользователей и хостов (в случае подключения из командной строки к другому компьютеру по ssh). Набранное частично команда или имя файла или каталога в текущей директории может быть автоматически дописано клавишей TAB. Если найдено более одного варианта и однозначно продолжить команду по TAB невозможно, то выводятся все подходящие варианты.

    При работе в графической среде удобны эмуляторы терминала. Как правило они поддерживают закладки -- несколько терминалов в одном окне, поддерживают цветовые схемы. Наиболее распространены эмуляторы терминала Gnome Terminal, Konsole, XFCE Terminal.