Skip navigation.

极湖

无不用其“极”

Posts tagged with "Solaris"

几则 Solaris 命令

,

查看OS版本
$ uname -aX

查看硬盘序列号
$ iostat -En

查看系统安装日期
$ ls -l /var/sadm/system/admin/INST_RELEASE
$ cat /var/sadm/system/admin/INST_RELEASE


查看内存使用率
$ ps -e -opid,vsz,rss,args | awk '{t=t+$2}END{print t/1024}'
$ ps -e -opid,vsz,rss,args | sort -nr +1


查看剩余inode数
$ df -e /

Solaris每进程打开最大文件数的修改方法

,

在Solaris系统下执行以下命令:

# ulimit -a
core file size (blocks) unlimited
data seg size (kbytes) unlimited
file size (blocks) unlimited
open files 256
pipe size (512 bytes) 10
stack size (kbytes) 8192
cpu time (seconds) unlimited
max user processes 15877
virtual memory (kbytes) unlimited

可以看到,每进程打开最大文件数是256,有时候需要修改这个数字。

修改方法

编辑 /etc/system 文件,在其末尾追加一行

set rlim_fd_max=1024

具体数字更具需要而定,修改后需要重启系统。

Solaris 8下监视磁盘用量的Shell脚本

,

Solaris的设置,感觉上比起Linux要麻烦。
一个短短的脚本,花费我整整一天。

#!/usr/bin/bash
# Shell script to monitor or watch the disk space
# ----------------------------------------------------------------------
# Copyright (c) 2007 Jlake ou
# author: ou
# ----------------------------------------------------------------------

# set admin email so that you can get email
ADMIN="local-watch@mail.domain"

# set alert level 90% is default
ALERT=90

df -k / /usr /var /var/run /tmp /opt | grep -v '^Filesystem' | awk '{ print $5 " " $6 }' | while read output;
do
  #echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
    echo -e "To: \"Local watcher\" <local-watch@mail.domain>\nFrom: \"System\" <root@server.name>\nSubject:!!Alert!! Disk usage of $partition >= $usep%\n\nRunning out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" | mail $ADMIN
  fi
done


sendmail需要设置的地方:
# vi /etc/mail/sendmail.cf
---------------------------------------------------
# "Smart" relay host (may be null)
DSmailhost$?m.$m$.
DSyour.smtp.server
---------------------------------------------------

还要设定cron
# crontab -e
---------------------------------------------------
0,10,20,30,40,50 * * * * /home/batch/disk_watch.sh
---------------------------------------------------

Solaris下收集系统信息

,

1. 处理器(CPU)
用 psrinfo 命令可显示CPU的信息。
# /usr/sbin/psrinfo -v

让一个CPU无效:
# /usr/sbin/psradm -f CPU的id

让一个CPU有效:
# /usr/sbin/psradm -n CPU的id

2. 内存(RAM)
用 prtconf 命令可显示系统配置信息,包括物理内存的大小。

显示物理内存大小的命令:
# /usr/sbin/prtconf | grep Memory

3. 磁盘
有数种方法可以得到磁盘的信息,以下命令可显示总的磁盘容量及已使用量。

# df -lk | egrep -v "Filesystem|/proc|/dev/fd|swap" | awk '{ total_kbytes += $2 } { used_kbytes += $3 } END { printf "%d of %d kilobytes in use.\n", used_kbytes, total_kbytes }'

若想得到硬盘的个数,可用以下命令(需root用户):
# format

或者:
# iostat -En

4. 处理器以及内核的位数

如果是 Solaris 2.6 或 2.6 以前的版本, 只有32位的内核。

检测处理器位数命令:
# isainfo -bv

检测内核位数命令:
# isainfo -kv

原文链接:
http://www.brandonhutchinson.com/Gathering_Solaris_system_statistics.html

备份并更新log文件,保留最后n行的脚本

, ,

脚本功能如题,内容如下:
#! /bin/sh
#
# Copyright(c) 2007, by ZhiWei Ou.                          
# All rights reserved.
#
#ident @Z%new_maillog 1.0       2007/01/25 SMI          
#
LOGDIR=/var/adm           
BAKDIR=/mnt/var_bak/adm
LOG=procmaillog
DATE=`date '+%Y%m%d'` 
if test -d $BAKDIR
then
        cd $LOGDIR
        test -f $LOG && cp -pf $LOG $BAKDIR
        tail -10000 $LOG > $LOG.tmp && mv $LOG.tmp $LOG
        cd $BAKDIR
        gzip $LOG && mv $LOG.gz $LOG.$DATE.gz  
fi

*该程序于Solaris下做成,Linux下应该也能用。

Solaris下tar和gzip的组合用法

, ,

Solaris的命令有时候没有Linux那么方便,比如tar命令,因为没有-z的选项,压缩归档不是那么方便,和gzip组合使用才能达到-z选项的效果。

在此总结一下tar和gzip的组合用法。

归档并压缩的命令

$ tar cvf - test | gzip -c > test.tar.gz

解压缩并展开归档的命令

$ gzip -d -c test.tar.gz | tar xvf -
$ gunzip -c test.tar.gz | tar xvf -
$ zcat test.tar.gz | tar xovf -

Solaris 简明安装手册

,

本文翻译自: http://www.unix-power.jp/solaris/install.html

■开发环境的整备

Solaris的开发环境默认是不被安装的,OS安装后需要自己安装。从Freeware for Solaris能得到二进制包,因此可以从这里下载一套开发环境。

以下是我的软件安装列表。

autoconf-2.53-sol8-sparc-local.gz
automake-1.6-sol8-sparc-local.gz
bash-2.05-sol8-sparc-local.gz
bc-1.06-sol8-sparc-local.gz
binutils-2.11.2-sol8-sparc-local.gz
bison-1.34-sol8-sparc-local.gz
bzip2-1.0.1-sol8-sparc-local.gz
cpio-2.4.2-sol8-sparc-local.gz
fileutils-4.1-sol8-sparc-local.gz
findutils-4.1-sol8-sparc-local.gz
flex-2.5.4a-sol8-sparc-local.gz
gawk-3.1.0-sol8-sparc-local.gz
gcc-2.95.3-sol8-sparc-local.gz
gdb-5.0-sol8-sparc-local.gz
gzip-1.3.3
gdbm-1.8.0-sol8-sparc-local.gz
gettext-0.10.37-sol8-sparc-local.gz
libgcj-2.95.1-sol8-sparc-local.gz
libpcap-0.6.2-sol8-sparc-local.gz
libtool-1.4-sol8-sparc-local.gz
m4-1.4-sol8-sparc-local.gz
make-3.79.1-sol8-sparc-local.gz
md5-6142000-sol8-sparc-local.gz
ntp-4.1.1a-sol8-sparc-local.gz
proftpd-1.2.1-sol8-sparc-local.gz
readline-4.2-sol8-sparc-local.gz
sed-3.02-sol8-sparc-local.gz
tar-1.13.19-sol8-sparc-local.gz
texinfo-4.0-sol8-sparc-local.gz
zlib-1.1.4-sol8-sparc-local.gz


安装软件用以下命令:

$ gunzip ******.gz
$ pkgadd -d ./******


■log的输出

Solaris默认输出的log较少,不容易掌握系统的状态,因此推荐有意识地增加log的输出。具体做法是在/etc/syslog.conf追加以下内容:
mail.debug               /var/log/maillog
auth.debug               /var/log/authlog
news.debug               /var/log/newslog
daemon.debug       /var/log/daemonlog
cron.debug               /var/log/cronlog

以上设置,须注意空白部分必须是tab。

另外,增加了log的输出之后,一方面log会一直堆积,因此需要定期滚动清理。Solaris默认用/usr/lib/newsyslog的Shell脚本来定期清理日志,但我比较喜欢用自己的Perl脚本,通过cron定期实现日志滚动。

/var/adm 之下的日志滚动脚本
#!/usr/bin/perl

$log='/var/adm';
@log_file=('lastlog','messages','sulog','utmpx','wtmpx','vold.log');
$count1=0;
$count2=5;

for $i (@log_file){
        if(-f "$log/$i$count2.gz"){
                system("rm -rf $log/$i$count2.gz");
        }
        for($j=4;$j>=0;$j--){
                if(-f "$log/$i$j.gz"){
                        $target=$j+1;
                        system("mv $log/$i$j.gz $log/$i$target.gz");
                }
        }

        if(-f "$log/$i.gz"){
                system("mv $log/$i.gz $log/$i$count1.gz");
        }

        system("/usr/local/bin/gzip $log/$i");
        system("mv $log/$i.gz $log/$i$count1.gz");
        system("cp /dev/null $log/$i");
        system("chmod 644 $log/$i");
}

system("/etc/init.d/syslog stop;/etc/init.d/syslog start");


/var/log 之下的日志滚动脚本
#!/usr/bin/perl

$log='/var/log';
@log_file=('authlog','cronlog','daemonlog','sshd.log','syslog','tcpd.log');
$count1=0;
$count2=7;

for $i (@log_file){
        if(-f "$log/$i$count2.gz"){
                system("rm -rf $log/$i$count2.gz");
        }
        for($j=7;$j>=0;$j--){
                if(-f "$log/$i$j.gz"){
                        $target=$j+1;
                        system("mv $log/$i$j.gz $log/$i$target.gz");
                }
        }
        if(-f "$log/$i.gz"){
                system("mv $log/$i.gz $log/$i$count1.gz");
        }
        system("/usr/local/bin/gzip $log/$i");
        system("mv $log/$i.gz $log/$i$count1.gz");
        system("cp /dev/null $log/$i");
        system("chmod 644 $log/$i");
}

system("/etc/init.d/syslog stop;/etc/init.d/syslog start");


以上脚本用适当的名字保存到适当的路径下,然后赋予执行权限,之后写入/var/spool/cron/crontabs/root让其定期执行。

■网络的设置

具体的网络设置文件如下所示:

/etc/netmasks
/etc/resolv.conf
/etc/defaultrouter
/etc/nodename
/etc/hosts
/etc/hostname.xxx


/etc/netmasks
192.168.0.0 255.255.255.0

以上是IP地址和子网掩码。默认应该就是这样的设置。

/etc/resolv.conf
domain yourdomain.com
nameserver 210.xxx.xxx.xxx
nameserver 203.xxx.xxx.xxx

如上所述设置所属域和域名服务器(DNS)的IP地址。第二域名服务器没有的情况下不需要特别记述。可能有些不便的是,因该文件默认不存在,需要生成。

/etc/defaultrouter
192.168.0.1

如上所述,设置您所使用的路由(网关)的IP地址。拨号上网的人经常在这儿碰壁。没有这个设定,也能访问局域网(LAN),不过,基本上不能访问外部网络。因该文件默认不存在,需生成。

/etc/hosts
192.168.0.3 host2
192.168.0.4 host3


以上文件记述本地网络中的机器,自己的主机名默认设置成loghost,这个不需要特别介意。因为这是作为别名来使用,设置syslog的时候被使用。如果不需要,把loghost删除了也没事。

/etc/hostname.xxx
hostname

xxx随着设备和构架而改变。如Sparc构架下一般是hme0,Intel构架下的3com则是elxl0等。该文件用来设置主机名。默认有设置。

Linux/BSD 和 Solaris 之差异数例

, ,

常用命令:

Linux/BSD: ps -aux
Solaris: ps -ef

Linux/BSD: df
Solaris: df -k

Linux/BSD: ping
Solaris: ping -s

Linux/BSD: shutdown
Solaris: shutdown [-y] [-i] [-g]

Linux/BSD: top
Solaris: prstat

Linux/BSD: tcpdump
Solaris: snoop

Linux/BSD: fdisk
Solaris: format

Solaris下,为了照顾Linux用户的习惯,将一些命令放在 /usr/ucb 之下,用这些命令,能得和Linux相同的结果。

目录结构:

Linux下默认有 /usr/local,Solaris则默认无,Solaris下相应的路径是 /opt

Linux的log文件一般放在 /var/log 下,Solaris则根据log的种类分别放在 /var/log/var/adm 之下。

Linux下,root用户的主目录是 /root ,Solaris的root用户的主目录则是 /

Linux的磁盘设备名在 /dev/ 之下,如 /dev/sda1,Solaris的磁盘设备名在 /dev/dsk/ 之下,如 /dev/md/dsk/d10
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31