Ключевые слова:solaris, (найти похожие документы)
From: Евгений Воронянский
Date: Sun, 22 Aug 2007 17:02:14 +0000 (UTC)
Subject: Полезные приемы при работе в ОС Solaris
Оригинал: http://surgutnet.ru/page.php?id=34
Отмечу, что все нижеприведенные мелочи Вы можете использовать в том
случае, если используете командный интерпритатор - bash.
Мониторинг работы процессов
При выполнении длительных операций приходится следить за окончанием
процесса. Для этого можно в коменде запуска процесса через ";" указать :
oracle@host$ long_process.sh;echo "End process" |mail $USER
или если это не воможно, то использовать следующее:
oracle@host$while true;do ps -ef |grep PID_PROCESS|grep -v grep|if
read str; then sleep 1; else echo "End process"|mail $USER;sleep 600;
fi;done;
где PID_PROCESS необходимо заменить на PID интересующего процесса. По
окончании процсса в почту текущего пользователя будет приходить
напоминание о завершении процесса каждые пять минут.
Если Вы часто используете "длительные процесссы", то целесообразно
создать удобный скрипт:
root@host>cat waitprocess
#!/bin/bash
usage()
{
echo Usage: waitprocess proc_name email messages;
}
if [ -z "$1" ]||[ -z "$2" ]||[ -z "$3" ]; then
usage;
exit -1;
fi
while true; do
sleep 1;
str=`ps -ef |grep "$1"|grep -v grep|grep -v "waitprocess"|tail -1`;
[ -z "$str" ] && break 1;
done;
echo "$3"|mail $2
Для того чтобы определить объем оперативной памяти и количество
процессоров в сисеме используйте (на SPARC платформе)
prtdiag |egrep "US|Memory size"
При первоначальной настройке операционной системы Вам нужно остановить
лишние демоны. С помощью скрипта приведенного ниже достаточно просто
сопоставить прослушиваемый порт - PID процесса
16:29|root@host>cat pp
#!/bin/bash
#
# For Solaris 8
#
PROCS=`/usr/bin/ps -ef|awk 'NR>1{print $2}'`
for i in $PROCS
do
if [ -n "`/usr/bin/pfiles $i 2>/dev/null|grep S_IFSOCK`" ]
then
/usr/bin/ps -f -p $i|/usr/bin/awk 'NR>1{print}'
/usr/bin/pfiles $i 2>/dev/null|/usr/bin/awk '/S_IFSOCK/{print
$1, $2, $5}/sockname:/{print}'
fi
done
Полезное в /etc/profile
Для того чтобы знать под каким именем и от какого пльзователя
производятся действия добавьте:
PS1="`date '+%H:%M'`|$LOGNAME@`uname -n`>"
после этого командная строка пинимает вид:
15:32|oracle@host>
Для того чтобы автоматически экспортировать дисплей на компьютер с
которого было установлено соединение посредством SSH добавьте:
DISPLAY=`env|grep SSH_CONNECTION|awk '{print $1}'|sed
's/SSH_CONNECTION=//g'|awk '{print $0":0.0"}'`; export DISPLAY
Внимание!
В зависимости от версии sshd эта срока может иметь несколько другой
вид, но думаю смысл понятен.
Или другой пример реализации:
DISPLAY=`/usr/xpg4/bin/who am i|awk '{print $6":0.0"}'|sed
's/(//g'|sed 's/)//g'`; export DISPLAY
Полезное в crontab
По умолчанию почовый демон (sendmail) по разным причинам накапливает
"устаревшую" почту в очереди, поэтому добавляем в crontab пользователя
от которого работает демон:
0 0 * * * /usr/lib/sendmail -q
При длительной работе ОС и частых "логинах" пользователей сильно
разрастается файл wtmpx, поэтому его стоит периодически очищать, так
как наврядли Вам пригодится инфорация годичной давности..
59 23 31 12 * cp /dev/null /var/adm/wtmpx
Если у Вас установлен "Sar", то вот так просто можно получить
статистику по загрузке за прошедший день:
59 23 * * * sar |mailx -s "SarStat" root
Пользователю oracle
При использовании большого числа серверов и БД достаточно часто может
происходить путаница. Если добавить следующее в профиль пользователя
oracle, то ее вероятность сводится к минимуму.
tput clear
echo
'*********************************************************************'
echo ' '
echo ' Machine : ' `hostname`
echo ' User Id : ' $LOGNAME
echo ' Home Directory : ' $HOME
echo ' Default ORACLE_SID : ' $ORACLE_SID
echo ' Default ORACLE_HOME : ' $ORACLE_HOME
echo ' Terminal Id : ' `tty`
echo ' '
echo ' '
echo '*********************************************************************'
echo ' '
echo ' ' `date`
echo ' '
echo '**********************************Last
logins:**********************************'
last -7
echo '*********************************************************************'
При написании скриптов, которые выплняются на сервере с несколькими
инстансами, часто приходится явно указывать переменные окружения
Oracle такие как ORACLE_HOME, ORACLE_BASE и т.д. Как правило при
работе с этим экземпляром все пременные уже выставлены, поэтому при
создании скрипта можно экономить время:
oracle@host$ set |grep ORA|awk '{print $1";"}'|while read str;do echo
$str `echo $str|sed 's/=/ /g'|awk '{print "export "$1}'`; done
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/8.1.7-64; export ORACLE_HOME
ORACLE_PATH=/usr/ccs/bin; export ORACLE_PATH
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xsun5; export ORACLE_TERM
ORA_NLS=/u01/app/oracle/product/8.1.7-64/ocommon/nls/admin/data;
export ORA_NLS
ORA_NLS32=/u01/app/oracle/product/8.1.7-64/ocommon/nls/admin/data;
export ORA_NLS32
ORA_NLS33=/u01/app/oracle/product/8.1.7-64/ocommon/nls/admin/data;
export ORA_NLS33
АБД часто обращаются к файлу alert_$ORACLE_SID.log, поэтому
целесообразно создать алиасы после установки переменных окружения:
alias arc='tail -50
$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log'
alias arcl='tail -1000
$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log'