1.查看系统及内核版本相关的信息:
# cat /etc/SuSE-release
# uname –a
2.查看系统cpu和内存具体参数进入如下目录:
查看CPU硬件信息:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2310 CPU @ 2.90GHz
stepping : 7
cpu MHz : 2893.427
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
# uptime
15:33pm up 0:58, 4个用户, 平均负载: 0.00, 0.01, 0.05
4.检查已挂载磁盘分区的空间使用情况
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/system-suse10 15G 6.4G 8.7G 43% /
udev 982M 156K 982M 1% /dev
/dev/sdb1 1012M 45M 916M 5% /boot
/dev/mapper/user-home 10G 8.4G 1.7G 84% /home
/dev/mapper/user-ftp 28G 28G 856M 98% /srv/ftp
/dev/mapper/sanfs-pub 199G 194G 5.0G 98% /srv/ftp/pub
/dev/mapper/user-vmos 45G 44G 1.3G 98% /var/vmos
/dev/mapper/system-work 15G 14G 1.9G 88% /work
df –h主要验证当前系统的磁盘空间使用率,如果磁盘空间占用满,系统将无法正常工作。解决这个问题有两个方法:
a.添加新的硬盘,将原有数据迁移过来
b.在建立系统分区时使用LVM分区方式,这样可以实现动态的扩容分区
5.查看当前系统内存的使用情况
#free
total used free shared buffers cached
Mem: 645508 639116 6392 0 59452 501156
-/+ buffers/cache: 78508 567000
Swap: 2097144 10700 2086444
Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,
第1行 Mem:
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
total = used + free+buffers
第2行 -/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
6.查看系统进程占用资源信息
#top
top - 21:34:32 up 16 days, 5:25, 2 users, load average: 0.09, 0.08, 0.05
Tasks: 66 total, 2 running, 64 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.3% id, 0.3% wa, 0.0% hi, 0.0% si
Mem: 645508k total, 639108k used, 6400k free, 59536k buffers
Swap: 2097144k total, 10700k used, 2086444k free, 500700k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9583 root 5 -10 333m 276m 271m S 1.0 43.9 1570:54 vmware-vmx
14780 root 15 0 0 0 0 S 0.3 0.0 2:32.97 pdflush
31642 hjb 16 0 1968 1048 820 R 0.3 0.2 0:00.04 top
1 root 16 0 600 112 76 S 0.0 0.0 0:08.37 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root 5 -10 0 0 0 S 0.0 0.0 0:00.15 events/0
4 root 13 -10 0 0 0 S 0.0 0.0 0:00.02 khelper
5 root 13 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid
32 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
第一行:
21:34:32 当前时间
up 16 days 5:25 系统运行时间
2 users 当前登录用户数
load average: 0.09, 0.08, 0.05 系统负载
第二行:
Tasks:66 total 进程总数
2 running, 正在运行的进程数
64 sleeping, 睡眠的进程数
0 stopped, 停止的进程数
0 zombie 僵尸进程数
第三行:
Cpu(s): 0.3% us, 用户空间占用CPU百分比
1.0% sy, 内核空间占用CPU百分比
0.0% ni, 用户进程空间内改变优先级的进程占用百分比
98.3% id, 空闲CPU百分比
0.3% wa, 等待输入输出的CPU时间百分比
第四、五行:
Mem: 645508k total 物理内存总量
639108k used 使用的物理内存总量
6400k free 空闲内存总量
59536k buffers 用作内核缓存的内存量
Swap: 2097144k total 交换区总量
10700k used 使用的交换区总量
2086444k free 空闲交换区总量
500700k 缓冲的交换区总量
第六行:
PID 进程id
USER 进程所有者用户名
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的、未被换成的物理内存大小
SHR 共享内存大小
S 进程状态(D:不可中断睡眠状态 R:运行 S:睡眠 T:跟踪/停止 Z:僵尸进程)
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
# locale -a
C
POSIX
aa_DJ
aa_DJ.utf8
aa_ER
aa_ER.utf8
aa_ER@saaho
查看系统支持哪些字符集
8.查看磁盘挂载的信息
#mount
/dev/mapper/system-root on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/hda1 on /boot type ext3 (rw,acl,user_xattr) []
/dev/mapper/system-home on /home type reiserfs (rw,acl,user_xattr)
/dev/mapper/system-ftp on /srv/ftp type reiserfs (rw,acl,user_xattr)
/dev/mapper/system-vmos on /vmos type reiserfs (rw,acl,user_xattr)
/dev/md0 on /work type ext3 (rw,acl,user_xattr) []
/dev/hdc on /media/cdrom type subfs (ro,nosuid,nodev,fs=cdfss,procuid,iocharset=utf8)
/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid)
usbfs on /proc/bus/usb type usbfs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
9.使用dmesg或cat /var/log/messages命令可以察看系统日志信息
# dmesg|grep -i error
Resume Machine: Error -6 resuming
end_request: I/O error, dev fd0, sector 0
end_request: I/O error, dev fd0, sector 0
# grep -i –e emerg –e alert –e crit –e error /var/log/messages
Apr 9 15:05:16 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 9 15:05:16 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 01:46:38 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 01:46:38 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 03:52:45 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 03:52:45 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 08:01:56 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 08:01:57 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 10 08:13:15 test1 sshd[4582]: error: PAM: Authentication failure for root from 10.0.0.3
Apr 11 02:15:30 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 11 02:15:30 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 11 02:27:01 test1 kernel: end_request: I/O error, dev fd0, sector 0
Apr 11 02:27:01 test1 kernel: end_request: I/O error, dev fd0, sector 0
10.使用chkconfig –list|grep “5:on”来检查系统运行级别5的启动加载服务
# chkconfig --list|grep "5:on"
coldplug 0:off 1:on 2:on 3:on 4:off 5:on 6:off
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
evlog 0:off 1:off 2:on 3:on 4:off 5:on 6:off
fbset 0:off 1:on 2:on 3:on 4:off 5:on 6:off
hwscan 0:off 1:off 2:on 3:on 4:off 5:on 6:off
kbd 0:off 1:on 2:on 3:on 4:off 5:on 6:off
network 0:off 1:off 2:on 3:on 4:off 5:on 6:off
powersaved 0:off 1:off 2:on 3:on 4:off 5:on 6:off
random 0:off 1:off 2:on 3:on 4:off 5:on 6:off
resmgr 0:off 1:off 2:on 3:on 4:off 5:on 6:off
running-kernel 0:off 1:off 2:on 3:on 4:off 5:on 6:off
sha 0:off 1:off 2:off 3:on 4:off 5:on 6:off
sshd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:off 5:on 6:off
xdm 0:off 1:off 2:off 3:off 4:off 5:on 6:off
关闭不需要的服务主要两个目的:1是节省系统资源;2是提高系统安全。根据系统运行的服务,通常可关闭以下服务:
- alsasound 声卡驱动
- nfs NFS共享文件系统
- nfsboot 同上
- portmap 同上
- slpd 服务定位协议
- smbfs Samba共享
- isdn ISDN上网
- postfix 邮件收发
使用chkconfig命令将这些不需要的服务关闭,如:
# chkconfig postfix off
- 使用ifconfig ,route,ethtool ,命令查看网络配置信息,如:
- #ifconfig
- eth0 Link encap:Ethernet HWaddr 00:0C:29:37:8F:1C
- inet addr:192.168.128.12 Bcast:192.168.128.255 Mask:255.255.255.0
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:1460 errors:0 dropped:0 overruns:0 frame:0
- TX packets:2575 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:136439 (133.2 Kb) TX bytes:207599 (202.7 Kb)
- 网关设置检测:
- #route
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 192.168.128.13 * 255.255.255.255 UH 0 0 0 eth1
- 192.168.128.0 * 255.255.255.0 U 0 0 0 eth0
- 192.168.128.0 * 255.255.255.0 U 0 0 0 eth1
- link-local * 255.255.0.0 U 0 0 0 eth0
- loopback * 255.0.0.0 U 0 0 0 lo
- 网卡设置检查:
- # ethtool eth1
- Settings for eth1:
- Supported ports: [ TP ]
- Supported link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Supports auto-negotiation: Yes
- Advertised link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Advertised auto-negotiation: Yes
- Speed: 1000Mb/s
- Duplex: Full
- Port: Twisted Pair
- PHYAD: 0
- Transceiver: internal
- Auto-negotiation: on
- Supports Wake-on: d
- Wake-on: d
- Current message level: 0x00000007 (7)
- Link detected: yes
- 使用netstat命令可以察看系统当前开启端口的情况,比如,使用netstat -ltnpu可以察看本地监听端口的情况:
- # netstat -ltnpu
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
- tcp 0 0 0.0.0.0:6674 0.0.0.0:* LISTEN 4083/hacmcontrol
- tcp 0 0 0.0.0.0:6675 0.0.0.0:* LISTEN 4111/hacmmanager
- tcp 0 0 0.0.0.0:6676 0.0.0.0:* LISTEN 4123/haexecd
- tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4937/0
- tcp 0 0 :::22 :::* LISTEN 4272/sshd
- tcp 0 0 ::1:6010 :::* LISTEN 4937/0
- udp 0 0 0.0.0.0:1024 0.0.0.0:* 4083/hacmcontrol
- udp 0 0 0.0.0.0:1025 0.0.0.0:* 4083/hacmcontrol
- udp 820 0 192.168.5.255:3322 0.0.0.0:* 4083/hacmcontrol
- udp 5328 0 0.0.0.0:3323 0.0.0.0:* 4083/hacmcontrol
- udp 5328 0 0.0.0.0:3323 0.0.0.0:* 4083/hacmcontrol
查看系统当前开启的端口,netstat –ltnpu命令显示了系统中所有开启的TCP和UDP端口,根据显示的信息判断系统中运行的服务。
- 查看用户列表,无不明用户,用户设置有没有错误,如:
- # cat /etc/passwd
- bin:x:1:1:bin:/bin:/bin/bash
- daemon:x:2:2:Daemon:/sbin:/bin/bash
- lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
- mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
- games:x:12:100:Games account:/var/games:/bin/bash
- 使用last 用户名 命令可以看到系统用户最后登陆时间,如:
- # last hjb | tail -10
- hjb pts/4 Fri Mar 28 18:26 - 18:26 (00:00)
- hjb pts/0 188.188.88.66 Fri Mar 28 09:51 - 18:26 (08:35)
- hjb pts/0 188.188.88.66 Thu Mar 27 16:53 - 21:49 (04:55)
- hjb pts/4 Wed Mar 26 09:01 - 17:53 (08:51)
- hjb pts/3 188.188.88.66 Wed Mar 26 08:50 - 17:53 (09:02)
- hjb pts/1 188.188.88.66 Wed Mar 26 08:36 - 08:36 (00:00)
- hjb pts/2 188.188.88.66 Wed Mar 26 08:35 - 08:35 (00:00)
- hjb pts/2 188.88.66 Tue Mar 25 17:23 - 17:36 (00:12)
此项操作为安全监测,主要查看用户的最后登陆时间,从而能够判断所有用户的最后登陆时间,并能确定做了何种操作。
- # vi /etc/HOSTNAME
- sles11sp2a.site
- #hostname sles11sp2a
- 通过配置文件/etc/HOSTNAME修改主机名后,需要重启系统生效,且永久有效。而通过hostname命令修改的主机名只临时生效。
配置IP地址
编辑/etc/sysconfig/network/ifcfg-eth0文件,如:
- vi /etc/sysconfig/network/ifcfg-eth0
- BOOTPROTO='static' #[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议)
- BROADCAST='10.10.3.255' #广播地址
- IPADDR='10.10.0.210' #IP地址
- NETMASK='255.255.252.0' #子网掩码
- NETWORK='10.10.0.0' #网络地址(可不要)
- STARTMODE='auto'
- 配置网关
- 编辑/etc/sysconfig/network/routes文件,需重启网络后生效,如:
- vi /etc/sysconfig/network/routes
- default 10.10.0.1 - -
-
- NTP时钟同步配置
-
编辑/etc/ntp.conf文件,如:
- vi /etc/ntp.conf
- server 10.10.0.100 prefer
- 上述IP地址指的是NTP服务器地址,如果有多个NTP服务器可添加多条记录。
编辑/etc/fstab文件,如:
- vi /etc/fstab
- /dev/sda1 swap swap defaults 0 0
- /dev/sda2 / ext3 acl,user_xattr 1 1
- proc /proc proc defaults 0 0
- sysfs /sys sysfs noauto 0 0
- debugfs /sys/kernel/debug debugfs noauto 0 0
- usbfs /proc/bus/usb usbfs noauto 0 0
- devpts /dev/pts devpts mode=0620,gid=5 0 0
- 第一列:需要挂载的文件系统或存储设备
- 第二列:挂载点
- 第三列:指定文件系统或分区的类型
- Linux file systems: ext2, ext3, jfs, reiserfs, reiser4, xfs, swap.
- Windows file systems: fat16、fat32、ntfs
- Network file system: nfs、smb
- 第四列:挂载选项,详细参考man mount. 下面列出一些常用的选项:
- auto: 系统自动挂载,fstab默认就是这个选项
- ro: read-only
- rw: read-write
- defaults: rw, suid, dev, exec, auto, nouser, and async.
- 第五列:为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份。
- 第六列:为fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略。
- 通过修改/etc/inittab文件来改变系统启动级别,如:
- #vi /etc/inittab
- id:5:initdefault:
- 0:表示关机
1:单用户模式
2:无网络连接的多用户命令行模式
3:有网络连接的多用户命令行模式
4:不可用
5:带图形界面的多用户模式
6:重新启动
开启/关闭防火墙:
- /etc/init.d/ SuSEfirewall2_init start|stop
- /etc/init.d/SuSEfirewall2_setup start|stop
关闭防火墙自启动:
例如查看/usr/local 下文件信息
- # ls -l
- total 36
- drwxr-xr-x 2 root root 4096 May 5 2010 bin
- drwxr-xr-x 2 root root 4096 May 5 2010 games
- drwxr-xr-x 2 root root 4096 May 5 2010 include
- drwxr-xr-x 2 root root 4096 May 5 2010 lib
- drwxr-xr-x 2 root root 4096 May 5 2010 lib64
- drwxr-xr-x 12 root root 4096 Jan 24 15:09 man
- drwxr-xr-x 2 root root 4096 May 5 2010 sbin
- drwxr-xr-x 2 root root 4096 May 5 2010 share
- drwxr-xr-x 2 root root 4096 May 5 2010 src
解释:第一字段d为文件类型,rwxr-xr-x是文件权限,两个root分别表示文件的属主和属组,4096表示文件的字节数,即大小,后面分别表示月份和年,最后问文件名称
-
-
- 查看文件内容信息(cat、more、less)
-
直接用cat查看文件:
- # cat /etc/issue
- Welcome to SUSE Linux Enterprise Server 11 SP2 (x86_64) - Kernel \r (\l).
直接用more一页一页的向后查看文件:
- # more /boot/grub/menu.lst
- ###Don't change this comment - YaST2 identifier: Original name: linux###
- title SUSE Linux Enterprise Server 11 SP2 - 3.0.13-0.27
- root (hd0,0)
- kernel /vmlinuz-3.0.13-0.27-default root=/dev/rootvg/rootlv resume=/dev/root
- vg/swaplv splash=silent crashkernel=128M-:64M showopts vga=0x314
- initrd /initrd-3.0.13-0.27-default
直接用less一页一页的向后/向前查看文件
- # less /boot/grub/menu.lst
-
- 创建文件或者目录(touch、mkdir)
-
使用touch命令创建文件:
- # touch filename
使用mkdir创建目录:
- # mkdir directory
修改文件file权限为任何人都能读写操作(即:rwxrwxrwx)
- # ls -l file
- -rw-r--r-- 1 root root 0 Mar 1 09:32 file
- # chmod 777 file
- # ls -l file
- -rwxrwxrwx 1 root root 0 Mar 1 09:32 file
-
-
- 修改目录或文件的属主/属组信息(chown)
-
修改文件file属主和数组为user:
- # ls -l file
- -rwxrwxrwx 1 root root 0 Mar 1 09:32 file
- # chown user:user file
- # ls -l file
- -rwxrwxrwx 1 user user 0 Mar 1 09:32 file
修改目录directory属主属组为user:
- # ls -l
- drwxr-xr-x 2 root root 4096 Mar 1 09:33 directory
- # chown user:user directory
- # ls -l
- drwxr-xr-x 2 user user 4096 Mar 1 09:33 directory
-
- 删除文件/目录(rm、rmkdir)
-
删除文件file:
- # ls -l file
- -rwxrwxrwx 1 user user 0 Mar 1 09:32 file
- # rm file
- # ls -l file
- ls: cannot access file: No such file or directory
删除目录directory:
- # ls –l
- drwxr-xr-x 2 user user 4096 Mar 1 09:33 directory
- # rmdir directory
- # ls -l directory
- ls: cannot access directory: No such file or directory
-
- 文件解压缩操作(tar、gz、bz2、tar.bz2、tar.gz、Z、zip等)
-
.tar
- 解包:tar xvf FileName.tar
- 打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
- 解压1:gunzip FileName.gz
- 解压2:gzip -d FileName.gz
- 压缩:gzip FileName
.tar.gz 和 .tgz
- 解压:tar zxvf FileName.tar.gz
- 压缩:tar zcvf FileName.tar.gz DirName
.bz2
- 解压1:bzip2 -d FileName.bz2
- 解压2:bunzip2 FileName.bz2
- 压缩: bzip2 -z FileName
.tar.bz2
- 解压:tar jxvf FileName.tar.bz2 或tar –bzip xvf FileName.tar.bz2
- 压缩:tar jcvf FileName.tar.bz2 DirName
.Z
- 解压:uncompress FileName.Z
- 压缩:compress FileName
.zip
- 解压:unzip FileName.zip
- 压缩:zip FileName.zip DirName
压缩一个目录使用 -r 参数,-r 递归。例: $ zip -r FileName.zip DirName
先查看系统是否有Linux这个账户:
- # grep 'linux' /etc/passwd
经过查看不存在‘linux’账户,接下来创建linux账户
- # useradd -m linux
-m创建用户家目录,具体根据实际情况而定。
- # grep 'linux' /etc/passwd
- linux:x:1001:100::/home/linux:/bin/bash
通过如上命令该账户创建成功,如果删除账户直接运用userdel命令
- # userdel liunx
- # cat /etc/passwd |grep 'linux'
至此linux用户被删除掉
-
-
- 修改(设置)用户密码(passwd)
-
对于通过useradd命令创建账户,在预设情况下是被封锁的,因为在/etc/shadow下该账户第二个字段是”!”,如果要进一步登陆系统,则需要设置密码,接下来通过passwd命令对新建用户linux设置密码:
- # passwd linux
- Changing password for linux.
- New Password:
- Bad password: too simple
- Reenter New Password:
- Password changed.
这样linux账户密码添加完成,也可以通过该命令同样操作来修改linux账户的原始密码.
如果对已经存在的账户一些属性做调整,比如家目录、初始群组、gid、uid等信息都可以通过usermod命令来修改。
比如修改linux账户家目录
- # cat /etc/passwd|grep linux
- linux:x:1000:100::/home/linux:/bin/bash
- # usermod linux -d /opt/linux
- # cat /etc/passwd|grep linux
- linux:x:1000:100::/opt/linux:/bin/bash
这样家目录修改为/opt/linux.
再比如修改uid和gid:
- # cat /etc/passwd|grep linux
- linux:x:1000:100::/opt/linux:/bin/bash
- # cat /etc/passwd|grep linux
- linux:x:1002:101::/opt/linux:/bin/bash
账户linux的uid和gid分别由1000、100改为1002、101
-
-
- 查看用户信息(id、finger)
-
如果了解当前用户的属主和属组以及uid、gid等信息,可执行id username
- # id linux
- uid=1002(linux) gid=101(messagebus) groups=16(dialout),33(video),101(messagebus)
想进一步了解某个用户的详细信息可以使用finger username
- # finger linux
- Login: linux Name:
- Directory: /opt/linux Shell: /bin/bash
- Never logged in.
- No Mail.
- No Plan.
-
- 添加删除用户组(groupadd、groupdel)
-
创建一个用户组,直接运行groupadd groupname,
比如创建一个名为suse的用户组:
- # cat /etc/group|grep suse
- # groupadd suse
- # cat /etc/group|grep suse
- suse:!:1001:
同样删除一个已知用户组,通过命令groupdel groupname
下面删除用户组suse,
- # groupdel suse
- # cat /etc/group|grep suse
至此,suse用户组已被删除.