Solaris useful commands

Материал из Wiki
Перейти к: навигация, поиск

Полезные команды (аналоги для linux)

Commnds
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 - показывает параметры запуска и переменные окружения уже запущенного процесса
Vmstat-solaris.png


настройка сети

В 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

Ссылки