Solaris useful commands
Полезные команды (аналоги для linux)
Solaris 10 | Linux | Description |
/usr/X11/bin/scanpci | lspci | |
prtconf |
- vmstat – выдает статистику по виртуальной памяти, которая также включает в себя информацию о потоках ядра, дисках и активности ЦПУ;
- psrinfo – отображает данные о процессорах;
- prtconf – отображает системную конфигурацию. Вывод утилиты может быть малопонятен начинающему администратору;
- prtdiag – отображает системную диагностическую информацию;
- dladm – посредством утилиты можно просмотреть доступные сетевые карты (Вот и отличие, чтобы просмотреть карты в Solaris, вводим * * dladm show-dev; для OpenSolaris – dladm show-phys). А вобще утилита служит для управления сетевыми подключениями;
- iostat – вывод I/O статистики (iostat -E вывод статистики по дискам);
- showrev – показывает информацию о релизе (только Solaris).
- ptree - вывоит дерево процессов
- pargs - показывает параметры запуска и переменные окружения уже запущенного процесса
настройка сети
В OpenSolaris за автоматическую настройку сети отвечает служба network/physical:nwam, в Solaris же этой службы нет.Пример настройки в OpenSolaris через nwam: сперва нужно отключить службу, внести необходимые изменения в файлы конфигурации и запустить службу
# svcadm enable network/physical:default # svcadm disable network/physical:nwam # отключаем сеть # dladm show-phys # узнаем имя сетевой карты LINK MEDIA STATE SPEED DUPLEX DEVICE rtls0 Ethernet up 100 full rtls0
задаем ip-адрес подключения, шлюз по умолчанию, dns-сервер и имя хоста
# echo “rtls0 static 192.168.40.99/22″ > /etc/nwam/llp # echo “nameserver 192.168.40.10″ > /etc/resolv.conf # echo “192.168.40.1″ > /etc/defaultrouter # echo “myhostname” > /etc/nodename # svcadm enable network/physical:nwam # включаем nwam
Для Solaris же делается все проще, указываем ip-адрес в файле /etc/inet/hosts; маску определяем в /etc/netmasks; имя компьютера в /etc/hostname.<имя_интерфейса>; DNS-сервер указывается в привычном месте – /etc/resolv.conf
# cat /etc/inet/hosts ::1 localhost 127.0.0.1 localhost 192.168.40.97 solaris loghost
cat /etc/inet/netmasks 192.168.40.0 255.255.252.0
# cat /etc/hostname.rtls0 solaris
Для работоспособности DNS (в обоих Солярах) необходимо убедиться что в /etc/nsswitch.conf или /etc/nsswitch.dns в параметрах hosts и ipnodes указан источник dns. Если настройки устанавливаются через DHCP эти настройки пропишутся автоматически
# grep dns /etc/nsswitch.conf hosts: files dns ipnodes: files dns
# grep dns /etc/nsswitch.dns hosts: files dns mdns ipnodes: files dns mdns
также следует помнить что имя хоста прописывается в /etc/hosts (это ссылка на /etc/inet/hosts) и при изменении имени там также необходимо внести изменения.
Также вариант изменения сетевых настроек на лету, без сохранения в файлах конфигурации
# ifconfig rtls0 192.168.40.97/22 up # route add default 192.168.40.1 add net default: gateway 192.168.40.1
Изменение таблицы маршрутизации (добавление, изменение, удаление). Единственный может быть минус, команда route показывает только персистентные маршруты (route -p show), более полную картину можно увидеть через netstat -rn
# route add -net 172.168.0.0/16 192.168.40.210 add net 172.168.0.0/16: gateway 192.168.40.210 # route change -net 172.168.0.0/16 192.168.40.211 change net 172.168.0.0/16: gateway 192.168.40.211 # route delete -net 172.168.0.0/16 192.168.40.211 delete net 172.168.0.0/16: gateway 192.168.40.211
Также следует обратить внимание на утилиту netstat
- netstat -s # статистика
- netstat -rn # маршуруты
- netstat -anf inet # просмотр соединений ipv4 (UDP,TCP, listen, established)
Интересна работа утилиты ping. Запустите пинги с параметром -s и без него.
# ping -ns ya.ru PING ya.ru (213.180.204.8): 56 data bytes 64 bytes from 213.180.204.8: icmp_seq=0. time=0.195 ms 64 bytes from 213.180.204.8: icmp_seq=1. time=0.200 ms # ping 192.168.40.1 192.168.40.1 is alive
traceroute также никто не отменял…
Управление службами
Операционные системы UNIX традиционно оснащены набором служб – т.е. программ, не связанных с каким-либо интерактивным именем пользователя, принимающих и обрабатывающих запросы на выполнение определенных задач (например, на отправку электронной почты, ответ на запросы FTP или разрешение выполнения удаленной команды). Для упрощения управления данными системными службами было создано средство управления службами Service Management Facility (SMF). SMF создает поддерживаемую, унифицированную модель для служб и управления службами в каждой системе OpenSolaris. Для идентификации каждой службы можно использовать команду svcs. Для администрирования или изменения службы можно использовать команду svcadm. Список всех доступных служб вместе с их SMF идентификаторами можно просмотреть посредством команды svcs -a.
запуск ssh и проверка того что она запущена
# svcadm enable network/ssh # svcs -a |grep ssh online 12:38:47 svc:/network/ssh:default
При изменении настроек службы можно перечитать файл конфигурации, не останавливая службу
# svcadm refresh network/ssh
перезапуск осуществялется следующим образом
# svcadm restart network/ssh
остановка службы
# svcadm disable network/ssh
Внимание, при использовании enable/disable служба автоматически вносится/удаляется в автозагрузку, чтобы временно запустить службу без прописи в автозагрузку указываем параметры -t для временного запуска, и -r для автоматического запуска зависимостей, например
# svcadm enable -rt rpc/bind
просмотр служб и процессов через таблицу процессов выполяняется через знакомый ps
# ps aux |grep sshd root 605 0.0 0.1 4104 1140 pts/2 S 12:50:52 0:00 grep sshd root 541 0.0 0.4 8184 3336 ? S 12:40:04 0:00 /usr/lib/ssh/sshd daevy 542 0.0 0.510208 5124 ? S 12:40:04 0:00 /usr/lib/ssh/sshd root 580 0.0 0.2 6720 1784 ? S 12:48:17 0:00 /usr/lib/ssh/sshd
процессы можно завершать посредством kill <SIGNUM> <PROC_PID>. В качестве примера завершу свою сессию ssh с pid равным 5124
# kill -9 5124 Connection to 192.168.40.97 closed by remote host. Connection to 192.168.40.97 closed.
процессы можно также отлавливать через pgrep и выносить с помощью pkill. Также есть prstat – top’образная утилита для отображения процессов.
пакетный менеджер
Помимо встроенных средств OpenSolaris (pkgadd, pkginfo, pkgchk, pkgrm) есть и пакетный менеджер IPS – Image Packaging System, посредством него выполянется поиск, скачивание, установка и удаление ПО в OpenSolaris. В Solaris же после установки, утилиту pkg я не обнаружил, возможно она ставится отдельно и поэтому пользоваться там придется встроенными средствами. Сперва рассмотрим OpenSolaris. Начнем с того что информация о репозиториях находится в /var/pkg/cfg_cache . После установки доступен только официальный репозиторий pkg.opensolaris.org. Дополнительно можно подключить еще пару полезных репозиториев sunfreeware и blastwave
# pkg set-authority -O http://pkg.sunfreeware.com:9000 sunfreeware # pkg set-authority -O http://blastwave.network.com:10000 blastwave
проверяем доступные репозитории
# pkg authority PUBLISHER TYPE STATUS URI opensolaris.org (preferred) origin online http://pkg.opensolaris.org/release/ blastwave origin online http://blastwave.network.com:10000/ sunfreeware origin online http://pkg.sunfreeware.com:9000/
обновляем списки пакетов из новых репозиториев
# pkg refresh
Здесь стоит рассказать о том как именуются пакеты в Solaris, т.к. это вызывает разные эмоции при первом знакомстве. В имени пакета содержится преффикс по которому определяется принадлежность к репозиторию. Пакеты репозитория opensolaris.org имеют как правило префикс SUNW. Пакеты репозитория sunfreeware.com – префикс IPSFW. Пакеты blastwave.network.com – IPS. Например если пакет Squid имеет имя IPSsquid, то он находится в репозитории blastwave. Найдем и установим squid.
# pkg search squid # pkg info SUNWsquid # просмотр информации о пакете # pkg install pkg:/SUNWsquid@2.7.6-0.111 # установка пакета # pkg list SUNWsquid # просмотр версии и состояния пакета в системе # pkg contents SUNWsquid # просмотр содержимого пакета # pkg uninstall SUNWsquid # удаление пакета
Теперь случай с Solaris когда pkg нет. Действия по обслуживания ПО можно выполнить средствами pkgadd, pkgchk, pkgrm и т.п. Для этого скачиваем пакет либо архив из любого доступного репозитория, это может быть установочный диск, или репозиторий в инете. Если это архив распаковываем его и выполняем pkgadd.
# gunzip mc-4.6.1-sol10-x86-local.gz # pkgadd -d ./mc-4.6.1-sol10-x86-local
Хочу отметить несколько деталей, во-первых зависимости нужно разрешать самостоятельно, во-вторых пакеты устанавливаются в /usr/local, поэтому в переменную PATH желательно добавить /usr/local/bin . Все пакеты хранятся в /var/spool/pkg. Также несколько полезных команд
# pkginfo -l SMCwget # вывод информации о пакете # pkgchk -v SMCwget # проверка установки пакета # pkgrm SMCwget # удаление пакета
В репозиториях Sunfreeware и Blastwave можно найти необходимые пакеты. В Blastwave на главной странице есть пакет pkgutil который существенно облегчает работу с пакетами. Его установка через pkgadd не вызывает трудностей и после установки мы получаем средство которое может самостоятельно разрешать зависимости, выкачивать и устанавливать пакеты в систему.
Тонкости
/boot/grub/install_menu – файл конфигурации grub; /etc/vfstab – таблица парметров монтирования файовых систем; утилиты для работы с диском du и df также актуальны и в Solaris; вместо tcpdump’а можно использовать snoop;
Работа с пакетами
Solaris: Adding package from CDROM 1) Mount cdrom
2) To add or install GNU tar package from Solaris CD use command
# pkgadd -d /cdrom/cdrom0/Solaris_9/Product SUNWgtar
Where, -d /cdrom/cdrom0/Solaris_9/Product: Specify package directory SUNWgtar: Package name
Solaris: Adding packages to spool directory and then install them 1) Copy package to /var/spool/pkg directory first:
# pkgadd -d /cdrom/cdrom0/Solaris_9/Product -s /var/spool/pkg SUNWgtar
Transferring package instance
Where, -d /cdrom/cdrom0/Solaris_9/Product: Specify package directory -s /var/spool/pkg : Directory in which package will get stored SUNWgtar: Package name
2) Install the packages copied to spool directory
# pkgadd SUNWgtar
Solaris: Install downloaded package 1) If your package is in .bz2 format then first uncompress it using bunzip2 command:
# bunzip2 Packagname.bz2
2) Install package:
# pkgadd –d Packagname
Note .bz2 extension will automatically removed by first command.
For example if your package name is SFWqt.bz2
# buzip2 SFWqt.bz2 # pkgadd –d SFWqt
Работа с пакетами-2
Проверка принадлежности файла к пакету
Use the pkgchk command to determine which package a particular file belongs to. The syntax is:
# /usr/sbin/pkgchk -l -p /absolute/path/todir
Пример:
# /usr/sbin/pkgchk -l -p /usr/bin/pgrep Pathname: /usr/bin/pgrep Type: regular file Expected mode: 0555 Expected owner: root Expected group: bin Expected file size (bytes): 14688 Expected sum(1) of contents: 63968 Expected last modification: Mar 16 05:53:45 AM 2000 Referenced by the following packages: SUNWcsu Current status: installed
То же самое можно сделать проще:
# grep /usr/bin/pgrep /var/sadm/install/contents /usr/bin/pgrep f none 0555 root bin 14688 63968 953204025 SUNWcsu
Еще примеры
set path to something like PATH=/usr/bin:/usr/ccs/bin:/usr/sbin:/sbin:/usr/platform/`uname -i`/sbin:/usr/proc/bin:/usr/ucb/:/usr/dt/bin:/usr/openwin/bin:/usr/local/bin:$HOME/bin df -n (or fstyp device) show type of file system (ufs/vxfs) fuser and pfiles open files prtconf -V OBP level pgrep, pkill, prstat -a process info and manipulation logins -p|-d local users without passwords | duplicate uids mpstat, prtdiag, psrinfo -v processor information and more traceroute since Solaris 7 troff -man man.1 | dpost | lp print old style man pages sgml2roff lpfilter.1m | troff -man | dpost | lp print sgml (new) man pages fstyp -v list superblock including minfree % tput nice screen output what, ldd, strings information about binaries ctrl-V in vi insert control character ftp> get README | more ufsdump 0f - /filesystem | (cd /mnt; ufsrestore rf -); rm /mnt/restoresymtable dump restore pipe echo \007 get bell to ring comm common (non-common) lines from two files pkgchk -lp /usr/bin/ls which package does ls belong to? df -oi -F ufs free inodes icheck -b blockno filesystem block to file mapping dircmp, rsync, filesync compare directories, sync utilities nohup /var/tmp/myscript.ksh > /var/tmp/myscript.out & for things which have to complete (no risk of terminal being logged out) netstat -pn arp like output when name services are down pwdx, pldd, ptree and more in /usr/proc/bin uname -X basic system information - one item on each line (useful for scripts) read read a line listusers another way of listing users tcopy copy tape nfsstat -m (or check /etc/rmtab) current nfs mount clear_locks clear nfs locks df -h, du -h, ls -lh since Solaris 9 - output in powers of 1024