[05-02]红帽linux经常使用操做命令

  1. 命令怎么用(三种方式)

shutdown --helpmysql

shutdown --?linux

man shutdown  man 就是manual  手册, 指南正则表达式

  1. 服务 service

怎么知道服务的名字呢?用这个命令chkconfigsql

chkconfig --list 会列出全部的服务项shell

启动服务,例如启动Mysql的服务数据库

service mysql  start   不是全部的命令都有这个d这个字母express

service iptables stop  关掉防火墙apache

service vsftpd  start  启动vsFTP服务器windows

service vsftpd  stop  服务中止安全

service vsftpd  restart 从新启动

  1. 开机自启动

你不用再手动的再去启动Mysqlvsftp,apache等等

chkconfig这个命令,check configure  检查配置

chkconfig --list | more

chkconfig --list | grep mysql

chkconfig --list | grep vsftpd

chkconfig mysql on    这几个3 4 5级别都启动

chkconfig --level 3 mysql on 只是在3这个级别启动

chkconfig mysql off

Mysql数据库的服务--------------mysql

vsFTP服务器的服务------------vsftpd

防火墙的服务------------iptables

ssh的服务------------sshd

http------------------httpd

  1. 修改系统默认的启动级别

修改那一个配置文件时,先备份

修改配置文件  /etc/inittab,将id:5:initdefault中的数字5改成3

3 纯命令行界面,有网络共享

5 图形界面

下一回系统启动的就不进入那个图形界面了

  1. 查看硬件信息

# uname -a               # 查看内核/操做系统/CPU信息

# head -n 1 /etc/issue   # 查看操做系统版本

# cat /proc/cpuinfo      # 查看CPU信息

# hostname               # 查看计算机名

# lspci -tv              # 列出全部PCI设备

# lsusb -tv              # 列出全部USB设备

# lsmod                  # 列出加载的内核模块

# env                    # 查看环境变量资源

# free -m                # 查看内存使用量和交换区使用量

# df -h                  # 查看各分区使用状况

# du -sh                 # 查看指定目录的大小

# grep MemTotal /proc/meminfo   # 查看内存总量

# grep MemFree /proc/meminfo    # 查看空闲内存量

# uptime                 # 查看系统运行时间、用户数、负载

# cat /proc/loadavg      # 查看系统负载磁盘和分区

# mount | column -t      # 查看挂接的分区状态

# fdisk -l               # 查看全部分区

# swapon -s              # 查看全部交换分区

# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)

# dmesg | grep IDE       # 查看启动时IDE设备检测情况网络

# ifconfig               # 查看全部网络接口的属性

# iptables -L            # 查看防火墙设置

# route -n               # 查看路由表

# netstat -lntp          # 查看全部监听端口

# netstat -antp          # 查看全部已经创建的链接

# netstat -s             # 查看网络统计信息进程

# ps -ef                 # 查看全部进程

# top                    # 实时显示进程状态用户

# w                      # 查看活动用户

# id                     # 查看指定用户信息

# last                   # 查看用户登陆日志

# cut -d: -f1 /etc/passwd   # 查看系统全部用户

# cut -d: -f1 /etc/group    # 查看系统全部组

# crontab -l             # 查看当前用户的计划任务服务

# chkconfig –list       # 列出全部系统服务

# chkconfig –list | grep on # 列出全部启动的系统服务程序

# rpm -qa                # 查看全部安装的软件包

cat /proc/cpuinfo :查看CPU相关参数

cat /proc/partitions :查看硬盘和分区

cat /proc/meminfo :查看内存信息

cat /proc/version :查看版本,相似uname -r

cat /proc/ioports :查看设备I/O端口

cat /proc/interrupts :查看中断

cat /proc/pci :查看pci设备的信息

cat /proc/swaps :查看全部swap分区的信息

  1. 查看系统日志

/var/log

/var/log/dmesg     /核心启动日志

/var/log/messages  /系统报错日志

/var/log/maillog   /邮件系统日志

/var/log/xferlog   /FTP服务用日志

/var/log/secure    /安全信息 系统登录与网络链接的信息

/var/log/wtwp      /登陆记录

# tail -f /var/log/messages  /查看最近发生的信息.

  1. 系统开关机

切换虚拟工做台:

Alt键和一个功能键来实现,一般使用F1-F6 。

如用户登陆后,按一下“Alt+F2”键,用户就能够看到上面出现的“login:”提示符,说明用户看到了第二个虚拟控制台。只需按“Alt+ F1”键,就能够回到第一个虚拟控制台。

一个新安装的Linux系统容许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。

虚拟控制台最有用的是:当一个程序出错形成系统死锁时,能够切换到其它虚拟控制台工做,关闭这个程序。

关闭计算机

shutdown -h -t 30    30秒后安全地关机断电

shutdown -c           取消关机命令执行

重启计算机reboot

退出命令行 exit

  1. 切换运行级别

运行级就是操做系统当前正在运行的功能级别。

这个级别从1 到6 ,具备不一样的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最早运行的服务是那些放在/etc/rc.d 目录下的文件。
    大多数的linux 发行版本中,启动脚本位于 /etc/rc.d/init.d。这些脚本被ln 命令来链接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)例如/etc/rc.d/rc2.d 下面的S10network 就是链接到/etc/rc.d/init.d下的network 脚本的。 

文件开头的S 表明start 就是启动服务的意思,后面的数字10 就是启动的顺序。例如,在同一个目录下,你还能够看到 S80postfix 这个文件,80 就是顺序在 10 之后,由于没有启动网络的状况下,启动postfix是没有任何做用的。另外,在/etc/rc.d/rc2.d 还能够看到那些K 开头的文件,例如/etc/rc.d/rc2.d/K45named,K 表明 kill ,表示中止服务的意思。
    标准的linux运行级为3 或者5 ,若是是3 的话,系统就在多用户状态。若是是5的话,则是运行着X Window。

不一样的运行级定义以下:

(能够参考Red Hat linux 里面的/etc/inittab)
# 0 - 停机
# 1 - 单用户模式
# 2 - 多用户,可是没有 NFS
# 3 - 彻底多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 从新启动 (千万不要把initdefault 设置为6 )

对各个运行级的详细解释:

0 为停机,机器关闭。
1 为单用户模式。
2 为多用户模式,可是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 通常不用,在一些特殊状况下能够用它来作一些事情。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。

  1. 软件包管理

安装 RPM 包

# rpm -ivh package.rpm

升级 RPM 包

# rpm -Uvh package.rpm

卸载 RPM 包

# rpm -ev package

查询 RPM 包中包含的文件列表

# rpm -qlp package

查询 RPM 包中包含的文件列表

# rpm -qlp package

查询 RPM 包中包含的内容信息

# rpm -qip package

查询系统中全部已安装 RPM 包

# rpm -qa

  1. 用户管理

who:查询当前在线的用户

groups:查询用户所属的组

id:显示当前用户信息

finger:查询用户信息

添加新的用户  useradd username

更改用户密码  passwd  username

改变用户home目录  usermod -d /home/username username                  

usermod -e "2009-01-01" username 给用户设置密码过时时间

usermod -G root() username (用户)  将一个用户添加到一个组里

usermod -g root username         更改用户的gid

usermod -s /bin/csh username      更改用户的默认shell

usermod -u 504 username         更改用户的uid,改成504

usermod -L username 锁定用户锁定后用户不能登录linux系统

usermod -U username       解锁用户

passwd -s username        看用户是否被锁定

userdel 用户名            删除用户注册信息

userdel -r 用户名          删除属于该用户的的家目录和邮件

  1. 存储管理

查看新的硬盘 # fdisk -l

建立pv  # pvcreate /dev/sdb

建立vg  # vgcreate datavg /dev/sdb  /dev/sdc

注:在使用vgcreate 在建立卷组时,还能够指定PE的大小,须要加上-s参数来实现,PE大小范围为8 KB 到 16GB,而且必须老是2的倍数。一个卷组里面最多容许65534个PE存在。默认设置的PE大小为4 MB,这表示卷组上建立的全部逻辑卷都以 4 MB 为增量单位来进行扩充或缩减,因此4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若要建立更大的逻辑卷则建立卷组时须要指定更大的PE。

建立lv  # lvcreate  -L 180M -n lvdata01 datavg

注:使用剩余的空间来建立逻辑卷时,应先经过“vgdisplay”命令可查看当前卷组剩余的空间。

在建立逻辑卷的时候,还能够指定逻辑块与物理块映射的模式,逻辑卷的映射模式共有以下两种: 

线性模式――按照顺序把必定范围内的物理块与逻辑块映射,这也是默认的映射方式。例如,把逻辑卷中1-25的LE映射到PV1,把26-50的LE映射到PV2上。 

条带模式――将把逻辑块以条带的形式映射到不一样的物理卷中,这种方式与前面讲到的RAID 0有些相似,这种方式能够提升逻辑卷读写的性能。例如,将逻辑卷的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV3的PE1。

# lvcreate -i 3 -I 4 -L 180M -n lvtest1 vgtest

参数的说明以下:

-i:采用条带模式的映射方式建立逻辑卷,该参数的值用于指定所建立的逻辑卷将映射在几个PV上。

-I:指定使用条带模式时所采用块的大小,单位为KB,其值必须是:2N(N≥2)。

-L:指定建立逻辑卷的大小,单位的能够用K、M、G、T表示KB、MB、GB及TB。

-n:用来指定所建立的逻辑卷名称,该名称可根据须要随便定义。

-l:用于指定逻辑卷的PE数量,默认为4MB为单位计算总容量。

在使用“-i”参数指定PV的个数时,必定要确认所指定的这些PV是没有彻底被分配给任何逻辑卷的,不然将建立失败,其次若这些PV的大小不等,那么所建立的逻辑卷只能取最小值。

建立文件系统  

# mkfs.ext3 /dev/datavg/lvdata01

挂载文件系统  

# mkdir /data01

# mount /dev/datavg/lvdata01  /data01

手动激活卷组    # vgchange -a y datavg

手动去激活卷组  # vgchange -a n datavg

注:卷组若不被激活,卷组和逻辑卷是不能被访问的,在LVM 2里建立的卷组默认是激活的。

为卷组增长新的物理卷

当卷组空间不足时,能够加入新的物理卷来扩大卷组容量,这时可用“vgextend”命令来实现。

# vgextend datavg /dev/sde

移除物理卷

要从一个卷组中移除一个物理卷,首先要确认要移除的物理卷没有被任何逻辑卷正在使用,经过“pvdisplay”命令可查看到该物理卷信息,以下:

# pvdisplay /dev/sde

--- Physical volume ---

PV Name /dev/sde

VG Name vgtest

PV Size 100.00 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 25

Free PE 25

Allocated PE 0

PV UUID ee2IFC-UHUq-Xg67-icwt-AhdJ-7kRz-JdDjiq

若其中的“Total PE”与“ Free PE”相等,代表该物理卷没有被使用,若是某个物理卷正在被逻辑卷所使用,就须要将该物理卷的数据转移到其它地方,而后再移除。移除物理卷的命令为“vgreduce”。

# vgreduce datavg /dev/sde

在物理卷间转移数据

当发现逻辑卷下的某个磁盘有错误,或有其它需求要转移其中物理卷的数据时(如,更换大容量或更高速的物理设备),那么可经过“pvmove”来实如今物理卷之间转移数据。

# modprobe dm-mirror

在使用“pvmove ”前须要用 “modprobe dm-mirror”命令来加载dm-mirror模块,由于“pvmove”在转移数据时须要用到该模块,而默认系统是不加载该模块的。# pvmove /dev/sdd /dev/sde

扩展逻辑卷

# lvextend -L +300M /dev/datavg/lvdata01     在原有的基础上,增长300MB空间大小

# lvextend -L 300M /dev/datavg/lvdata01 扩展到300MB空间大小

逻辑卷扩展后并不立刻生效,需使用“resize2fs”命令从新加载逻辑卷的大小,该命令只针对ext2/ext3的文件系统(如果reiserfs的文件系统,则使用“resize_reiserfs”命令),若是该逻辑卷正在使用中,就应该先将该逻辑卷卸载后再执行“resize2fs”命令。

# umount lvdata01

# resize2fs /dev/datavg/lvdata01 

# mount /dev/datavg/lvdata01 lvdata01

注:以上这些操做能够经过“ext2online”命令直接来实现,这样就不用作卸载逻辑卷等操做了。

# ext2online /dev/datavg/lvdata01

删除逻辑卷:删除逻辑卷前首先须要将其卸载,再执行如下命令:

# lvremove /dev/datavg/lvdata01

移除卷组:在移除卷组前首先要确认该卷组中已没有任何的逻辑卷了,或者可以使用“vgchange”手工将卷组中止,移除卷组的具体操做以下:# vgremove datavg

删除物理卷:删除物理卷前,须确认该物理卷已从卷组中移除了。

# pvremove /dev/sde

  1. 网络配置

可使用 system-config-network-tui (文本模式) 、system-config-network-gui (图像模式),netconfig(文本模式)等网络配置工具。这些工具都会直接修改Linux系统中关于网络接口的设置文件;

这是 ifconfig 命令所不能比的;其中 redhat-config-network 和system-config-network工具不只仅是设置网卡的工具,更有设置ISDN和普通猫、ADSL的工具、网络硬件的添加、主机名字的设置、DNS各客户端的设置等。例如:

#  /usr/sbin/system-config-network-tui
#  /usr/sbin/system-config-network-gui
netconfig 工具是个在文本模式比较好的工具。
# netconfig -d eth0    /设置eth0
# netconfig -d eth1    /设置eth1

设置网卡的DHCP模式自动得到IP
# netconfig -d eth0 --bootproto=dhcp
手动设置网卡的IP等
# netconfig -d eth0 -ip=192.168.1.33 -netmask=255.255.255.0 -gateway=192.168.1.1

1) 配置eth0的IP地址, 同时激活该设备。

#ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

2) 配置eth0别名设备eth0:1的IP地址,并添加路由。

#ifconfig eth0:1 192.168.1.3

#route add –host 192.168.1.3 dev eth0:1

3) 激活设备。 #ifconfig eth0:1 up

4) 禁用设备。 #ifconfig eth0:down

5) 查看指定的网络接口的配置。 #ifconfig eth0

6) 查看全部的网络接口配置。 #ifconfig

(7 查看网络接口的链接状态:# ethtool eth0 

1) 添加到主机的路由。

#route add –host 192.168.1.2 dev eth0:0

#route add –host 10.20.30.148 gw 10.20.30.40

2) 添加到网络的路由。

#route add –net 10.20.30.40 netmask 255.255.255.248 eth0

#route add –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

#route add –net 192.168.1.0/24 eth1

3) 添加默认网关。 #route add default gw 192.168.1.1

4) 查看内核路由表的配置。

#route

5)删除路由。

#route del –host 192.168.1.2 dev eth0:0

#route del –host 10.20.30.148 gw 10.20.30.40

#route del –net 10.20.30.40 netmask 255.255.255.248 eth0

#route del –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41

#route del –net 192.168.1.0/24 eth1

#route del default gw 192.168.1.1

对于1和2两点可以使用下面的语句实现:

Ifconfig eth0 172.16.19.71 netmask 255.255.255.0

Route 0.0.0.0 gw 172.16.19.254

Service network restart

1) 显示网络接口状态信息。 #netstat –i

2) 显示全部监控中的服务器的Socket和正使用Socket的程序信息。 #netstat –lpe

3) 显示内核路由表信息。

#netstat –r

#netstat –nr

4) 显示TCP/UDP传输协议的链接状态。

#netstat –t

#netstat –u

hostname更改主机名

#hostname myhost

  1. 清屏

clear是清屏幕,windowscls

  1. 列出文件的内容

cat  tac  head   tail    more

cat  3.txt    正序  从第一行开始

tac  3.txt    倒序  从倒数第一行开始

head 3.txt     

head  -3  3.txt        列出前3行    

head能够带参数  -lines

 tail  -1  3.txt        最后一行

more 3.txt ------more默认是能够分页的,因此不少管道用到了他

ls         横着排显示,这一行显示满了接着下一行

ls -l       一行只显示一个文件或者目录的详细信息      

ls -m      横着排显示,这一行显示满了接着下一行

ls -R      有点像树状展现

  1. Cp+move

cp    copy 拷贝       mv     move 移动

cp 1   2   1这个文件拷贝一份,名字叫2

cp -r d1 d2  拷贝目录必须带参数 r

删出一个目录,先要删去目录下面的东西。要用递归,拷贝也是

mv d2  d1  d2目录移到d1,若是不行,加递归  mv –r

  1. 更名字 mv

Mv除了能够移动外,还能够更名字

Mv 3.txt  4.txt  3.txt的名字改成4.txt

  1. whoami

显示当前的用户,是root仍是其余用户

  1. 5下 ESC

5ESC,会出现能够不少使用的命令

display all 2091 possiblities,即RedHat Linux2000多个命令。

  1. mount 挂载+卸载

mount point 挂载点

mount  /dev/cdrom   /mnt/cdr  dev目录下的cdrom设备与

根目录下的mnt目录下的cdr目录关联起来,这就是挂载

挂载点------cdr   设备-----CDROM

卸载umount  /dev/cdrom  或者 umount /mnt/cdr

  1. VI is important

Vi:命令模式与编辑模式,刚开始进入的命令模式,不能输入内容。

a进入编辑模式,底下会出现insert这个单词   append 追加

esc   退出编辑模式,进入命令模式

在命令模式敲冒号 : ,而后再敲命w 是存盘

q 是退出   q!是不存盘退出   wq是存盘退出(最经常使用)

wq是存盘退出   w是否是write的意思

  1. find

查找某个文件的名字(前提是你记得大概的名字),查找它的路径路径路径。能够根据建立日期查找,查找rc.local

find  /   -name  *local  从根目录下面开始查找,指定一个位置,从那里开始查

find /etc  -name *local

find /etc | grep  local   系统回去找含有local这几个字母的全部文件或者目录

find / -name MySQL系统只是回去找名字叫MySQL的文件或者目录

find / -name MySQL*找名字叫前几个字母是MySQL(后面任意)的文件或者目录,名字没必要写全

  1. whereis

whereis  ls  查找ls这个命令在哪里

/bin  bin 目录下面有各类命令  vi  cat   ls   pwd 等等

/usr/bin   目录下面也有各类命令

  1. 查看环境变量

DOS下面看环境变量

echo %path%

echo %classpath%

Linux下面  echo $PATH   PATH  必须大写

  1. 连接  ln

ln  3.txt  4        more 4

连接:改了3.txt,4的内容也会自动跟着改,前提是你没有修改4

ln 3.txt  4  硬连接,至关于复制了一份,而后再在两个文件之间创建了快捷方式,修改3.txt4也会变

ln -s 3.txt 5  软链接,至关于windows的快捷方式,修改3.txt5也变

两种连接的不一样之处:

3.txt删去,5不存在了,链接断掉了,4还存在。

  1. wc word count

wc  -l  lines  这个文件有多少行

  1. grep

global  regular expressions  print  全局正则表达式版本

在文本文件中查找指定的字符串,而且把包含的那一行给显示出来, grep student    4

4这个文本文件中找student这个字符串,哪一行包含它,显示出来

^在正则表达式中,表明一行的开头

ls -l | grep '^d'  只把目录列出来,/etc下面的文件与目录不少

^ 这个字符在数字6上面

rpm –qa 把全部的包都列出来,

rpm -qa | grep MySQL   查找含有MySQL这几个词的全部包,只要包名里面有MySQL这几个字母,就会被找出来

  1. grep 与 find

find /  -name MySQL*

find /  | grep MySQL

fdisk  -l          l显示当前的磁盘信息

  1. dmesg

列出开机的启动信息  全称是------d  message

dmesg | grep eth0    看第一块网卡启动正常吗

  1. 命令替换wall

warning  all  通知全部人,警告全部人

wall  helloworld    

wall  `date`  警告的字符是当前的时间,把date当作一个命令,把这个命令执行的结果警告出去(`  这个字符是数字1左边那个字符)

wall  date   警告的字符是  date

  1. 重定向

Java原来的一个程序,out替换掉.

System.out.println()   把命令输出到了文件中

ls

ls > cmd.txt 把刚才ls执行的命令的结果输入到cmd.txt这个文件中

错误输出重定向---------

lssss > cmd.txt   不行 , lsss这个命令不存在

lssss 2> cmd.txt

重定向输入 wall < cmd.txt  cmd.txt里面的内容警告出去

  1. 管道  

分页显示,/etc下面的内容不少

ls -R

ls -R  | more  把上一个命令执行的结果交给下一个命令

ls -l /etc |  more

more默认是能够分页的,可是ls -l 不会分页,有时候显示的内容巨多无比,用more将结果。分页岂不很好。

ls -l | grep '^d'  只把目录列出来,/etc下面的文件与目录不少

  1. 文件权限 file privilege

最左边的一共有10

    - (表明文件)  d(表明目录)   l(是L表明连接)

把最左边的那一个去掉,就剩下9个了,能够划分红3组。

Linux文件的权限分为4---------

read  write   execute   none(什么也没有)  

9位分红3组:

第一组表明这个文件的全部者有什么权限

第二组表明这个文件的全部者同组的人所拥有的权限

第三组表明剩下的人具备什么权限

x--------------execute

r-------------read

w---------------write

- 表明什么也没有  none

  1. Chmod-不专业

change  mode

chmod  +x 4  4这个文件加上可执行权限,其余两组也具有

chmod  -x 4  取消权限

chmod u+x  4 只给本身加上可执行权限,只给第一组加上权限

怎样让同组的其余人也有这个权限:

chmod g+x 4   只给第二组加上权限  group

chmod o+x 4  只给第三组加上权限  other

chmod 755 4            

chmod 777 4

7表示权限都齐了   5表示没有写的权限

Linux(Unix)内部表示权限,是用3个八进制数来表示的

000  =====0               111 ======7

  1. 怎么修改文件的全部者

chown    testuser1   4  -------------change owner

  1. 简单用户的管理

当一个用户登陆的时候,默认的路径是这个用户的主目录

  1. 添加用户(两种方式)

useradd  testuser   

adduser  testuser  

  1. 设置密码

passwd testuser  给这个用户设置密码

按了退格键  无效由于密码不显示

  1. 两个位置变化

增长一个用户后,系统有两个位置会有变化:/home /etc

cd /home  ls #home目录会有一个自动生成的目录,叫作testuser

cd /etc more  passwd    打开 passwd这个文件

passwd这个文件没有存密码,存的是全部的用户testuser:x:501:502::/home/testuser:/bin/bash

这句话的意思:这个用户 id---501   所位于的组:502

用户的主目录为----/home/testuser

这个用户用到的shell  --------  /bin/bash

用户组------------------------------------------------

组的信息在group这个文件中  /etc/group

添加一个用户不指定组的时候,会添加一个和你用户名同样的组

  1. 添加一个组

groupadd testg

useradd testuser2 -g testg  添加用户的时候指定组

修改用户所属组   usermod -g testuser   testuser2新的组 用户名

usermod---------user modify

  1. 删除用户与组

删除用户分两步---删掉用户  删掉他的目录

userdel  testuser

cd /home

rm -rf testuser

组的删除 groupdel  testg

  1. 用户切换

switch  user

su  testuser2

  1. Shell

内核外面有一层,叫作shellshell会解释你在Linux下面敲的命令,而后再与内核打交道。shell有不一样的形式,有不一样的shellc  shell -------c 语言形式的shell,不一样的shell执行的命令是不同的,一样的命令在不一样的shell底下不能通用,经常使用的命令,能够通用。

我们用的shell叫作 bash,之前叫作bsh,名字的由来,是由一个叫作bone的人,写的,因此叫作bsh,后来他又写了一遍,bone again shell ,因此叫作 bash

bash ------ 切换到bash

csh  --- 切换到 C  shell  

ksh -----  切换到k   shell

sh  最原始最原始的shell

bsh ------ 切换到bsh

相关文章
相关标签/搜索