查看系统的版本
uname -a
uname -X
cat /etc/release
查看内核位数
isainfo -v
如何查看版本号和linux一样
cat /etc/release  ; Solaris版本
uname -a          ; Kernel版本
1.看物理内存用prtconf,在x86和sparc都通用的:
# prtconf -vp | grep Mem
Memory size: 1015 Megabytes
2.用vmstat看使用情况:
# vmstat 1
kthr      memory            page            disk          faults      cpu
r b w  swap free re mf pi po fr de sr cd s0 s1 --  in  sy  cs us sy id
0 0 0 1016848 587012 36 117 73 1 3 0 121 11 -0 11 0 475 2930 936 7 2 91
0 0 0 963184 522692 11 27 0 0 0 0 0 0 0 0 0 393 848 273 1 1 98
0 0 0 963184 522732 0  0 0 0 0 0 0 0 0 0 0 399 328 281 0 0 100
0 0 0 963184 522732 0  0 0 0 0 0 0 0 0 0 0 402 1368 283 1 0 99
0 0 0 963184 522732 0  0 0 0 0 0 0 0 0 0 0 387 772 258 0 1 99
0 0 0 963184 522732 0  0 0 0 0 0 0 0 0 0 0 400 1801 274 1 0 99
3.Solaris 9开始,可以使用mdb来查看内存:
# echo ::memstat |mdb -k
Page Summary                Pages                MB %Tot
------------    ---------------- ---------------- ----
Kernel                      26350              102  10%
Anon                        78852              308  31%
Exec and libs              13812                53    5%
Page cache                  8400                32    3%
Free (cachelist)            39009              152  15%
Free (freelist)            91239              356  35%
Total                      257662              1006
以上三中方法查看内存大小及使用情况。
CPU:psrinfo -v
MEMORY:prtconf |grep size
prtdiag -v
机器的部件信息及PN号
prtfru -x
查看所以硬盘及分区使用情况df -h
查看某个文件夹 某个目录的大小du path 
查看cpu 内存使用状况vmstat
动态查看进程CPU使用状况以及内存使用状况 比如1秒更新一次prstat -a 1 
SPARC
通常的“uname -a"命令就可以知道Solaris的版本:
想知道是哪一个Solaris Update版本,可以查看/etc/release文件。
对于曾经使用过Opensolaris的BFU升级的用户,应该查看/etc/motd文件。
showrev
showrev -p
showrev -a
#pkginfo -l
cat /etc/release
isainfo -v 
1、首先,需要到该进程的进程ID(以DSLMgrDm为例)
$ ps -ef | grep DSLMgr
root  416  375  0  Jun 19 ?        4:08 /opt/n2000/server/conf/../bin/DSL
MgrDm
n2kuser  1846  1823  0 16:53:00 pts/3    0:00 grep DSLMgr
2、之后便可以查询该进程的资源占用情况了
$ prstat -p 416
PID USERNAME  SIZE  RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
416 root      67M  26M sleep  59    0  0:00.19 0.0% DSLMgrDm/33
3、还可以查询该进程的各个线程的资源占用情况
$ prstat -Lp 416
PID USERNAME  SIZE  RSS STATE  PRI NICE      TIME  CPU PROCESS/LWPID
416 root      67M  26M sleep  59    0  0:00.08 0.0% DSLMgrDm/24
416 root      67M  26M sleep  59    0  0:00.01 0.0% DSLMgrDm/23
416 root      67M  26M sleep  59    0  0:00.00 0.0% DSLMgrDm/21
416 root      67M  26M sleep  59    0  0:00.00 0.0% DSLMgrDm/20
...  ...
1、首先,要取得该进程的core文件(如果该进程的进程ID是416)
# gcore -o DSLMgrCore_06221701 416
gcore: DSLMgrCore_06221701.416 dumped
2、然后将此core文件转换一下即可
# pstack DSLMgrCore_06221701.416 | c++filt       
(由于信息太多,下面只列出了线程1和线程2的堆栈信息,该命令与前面介绍的prstat命令相结合即可查看CPU占用率最高的线程的工作情况)
-----------------  lwp# 1 / thread# 26  --------------------
fd19f428 lwp_sema_wait (fa40fe60)
fe0c96dc _park    (fa40fe60, fe0ec000, 0, fa40fd98, 2234c, 0) + 114
fe0c90d8 _swtch  (fa40fd98, fa40fd98, fe0ec000, 5, 1000, fe0cc910) + 158
fe0cc97c _sema_wait (1413658, fe0f785c, 10000, 1, 1413678, 1413660) + b0
fe0ccbb0 _libthread_sema_wait (1413658, 0, 14f6fd0, fe4f6000, 110e8, fe0ccb70)
+ 40
fe4e4e7c sem_wait (1413658, 0, fa40f660, 0, 216d4, fda62e64) + 20
fda6474c int ACE_OS::sema_wait(ACE_sema_t*) (1413440, 0, fa40f87c, 0, 0, 0) + 3
4
fda5edc0 int iMapTaskMgr::WaitThreadEnterCond(ACE_Time_Value&) (14133e8, fa40f8
7c, 0, 1, 0, 0) + 120
fda5e8d0 iMapTask*iMapTaskMgr::AcquireIdleTask() (14133e8, 14f6fd0, 0, 1, 1, 0)
+ 78
fda5e48c int iMapTaskMgr::svc() (14133e8, 14133e8, 1a, 0, 0, 14f6fd0) + dc
fd90bc30 void*ACE_Task_Base::svc_run(void*) (14133e8, 1, 0, 0, 1a, 14133e8) + b
0
fd831cbc void*ACE_Thread_Adapter::invoke_i() (14143d8, 1198068, 14143d8, fd90bb
80, 14133e8, 0) + bc
fd831bac void*ACE_Thread_Adapter::invoke() (14143d8, 0, 1198068, 14143d8, 0, 11
efc20) + e4
fd7c094c ace_thread_adapter (14143d8, fe0f2708, 0, 5, 1, 14143d8) + 3c
fe0db01c _thread_start (14143d8, 0, 0, 0, 0, 0) + 40
-
----------------  lwp# 2 / thread# 2  --------------------
fd19ed78 signotifywait ()
fe0ce950 _dynamiclwps (fe0ec000, ffbef618, 2, ffbef644, 0, 7efefeff) + 1c
fd19a220 thr_errnop (0, 0, 0, 0, 0, 0) + 20
我照下面做不行:
1)修改了/etc/system中的定义,并重新启动了机器。
set rlim_fd_max = 4096
set rlim_fd_cur = 1024
2)在用户的.cshrc里面设置了
limit descriptors 1024
3)用命令 ulimit -Sn已经能看到改为了1024
但运行程序时,打开文件数目到256以后,再想打开文件,就提示
fopen出错了,为什么?
代码如下:int main(){
int size=0;
size=getdtablesize();
FILE *fp[1024];
printf("max file descriptors = %d\n",size);linux命令查看文件夹大小
int i;
char filename[256];
strcpy(filename,"./";
for(i=0;i<1024;i++){
if ((fp=fopen(filename, "r")==NULL){
printf("fopen() error\n";
return -1;
}
printf("cur fd num:%d\n",i+
1);
}
return 0;
solaris下的单个进程打开的最大文件数要设置到最大,如何做?
ulimit -n
man ulimit
# svcs -a |grep network |egrep "pfil|ipf"
disable 4:36:25 svc:/network/pfil:default
online 23:41:33 svc:/network/ipfilter:default
(查看IP Filter服务是否启动)
# ifconfig -a inet
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843 mtu 1500 index 3
inet 10.4.128.226 netmask ffffff00 broadcast 10.4.128.25
(查看网卡设备名)
#vi /etc/ipf/pfil.ap
.
......
#dnet -1 0 pfil
#pcelx -1 0 pfil
#spwr -1 0 pfil
pcn -1 0 pfil
.......
(将网卡设备名前注释去掉)
#vi /etc/f
block in log quick proto tcp from 10.4.128.0/24 to any port = ftp
(编辑防火墙规则)
#svcadm enable svc:/network/ipfilter:default
(启动服务)
#svcs -a |grep -i ipf
(再次查看服务是否启动)
#autopush -f /etc/ipf/pfil.ap
(生效pfil.ap配置,此步骤只需要做一次,以后更改防火墙规则就不需要再做)
#ifconfig pcn0 down unplumb
(禁用网卡)
#ifconfig pcn0 plumb 10.4.128.226 netmask 255.255.255.0 broadcast 10.4.128.255 up
#ifconfig pcn0 plumb 192.168.0.6 netmask 255.255.255.0 broadcast 192.168.0.255 up
(启用网卡)
这时候防火墙已经生效,大家可以试着FTP配置好的服务器,若以后需要更改规则请参照以下步骤:
#vi /etc/f
block in log proto tcp from 10.4.128.0/24 to any port = ftp
block in log proto tcp from 10.4.128.0/24 to any port = telnet
#ipf -Fa -f /etc/f
#ipfstat -io
#ipfstat
#ipmon
更改完以后可以再次试着FTP。
大家可能比较迷茫的就是规则方面了,其实它的规则很好懂,配置起来也很简单:
禁止就是block
通过就是pass
进来就是in
出去就是out
那么配合起来使用就行了,再加上可以指定在哪个网卡上使用,也就是再加个on pcn0,另外还有一个关键字就是all,这是匹配(禁止或者通过)所有的包,组合起来的例子就是:
block in on pcn0 all
(禁止所有的包进入)
还可以针对网段、IP以及端口的配置,就是在包的后面加如from .... to .... port = ..就可以,等号的地方可以改成其他运算符,如<、>
网段:block in log proto tcp from 10.4.128.0/24 to any port = ftp
地址:block in log proto tcp from 10.4.128.163/32 to any port = ftp
对于协议的控制,它一样可以做的很好。协议的关键字有4种(icmp、tcp、udp、tcp/udp),启用对协议的控制就是在协议的关键字前加proto关键字如:
block in on pcn0 proto icmp from any to any
在使用ICMP协议控制的时候,可以使用icmp-type关键字来指定ICMP协议的类型,类型的值有4种:
ICMP Type Value Keyword
Echo reply 0 echorep
Echo request 8 echo
Router advertisement 9 routerad
Router solicitation 10 routersol
例如:
block out quick proto icmp
from any to 10.4.128.163/32 icmp-type 0
(禁止对PING的响应)
在这里要解释一下quick的用法,这是个很好用的关键字,假如你的防火墙有100条规则,最有用的可能只有前10条,那么quick是非常有必要的。
pass in log quick proto tcp from 10.4.128.163/32 to any port = telnet
block in log all from any to any
假如你希望禁止服务器的所有包而只希望一个IP只能够telnet的话,那么就可以加上quick关键字,quick的作用是当包符合这条规则以后,就不再向下进行遍历了。如果没有quick的情况下,每一个包都要遍历整个规则表,这样的开销是十分大的,但是如果滥用quick也是不明智的,因为它毕竟不会产生日志。
添加用户时要有一个登陆根目录,这个目录属于该用户。所以我一般先用:
  useradd -g xxg xxuser
  然后创建一个目录xxdir
  chown -R xxg:xxuser xxdir
  userdel xxuser
  useradd -g xxg -d xxdir xxuser
  passwd xxuser
  这样就可以用该用户登陆了.
useradd -g mysql mysql
7)验证:
>groups mysql
mysql
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:
g/str1/s//str2/g 功能同上

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。