shift
移动位置参数。
概要
shift [n]
主要用途
- 将位置参数
$n, $n+1...重命名为$1, $2...。
参数
n(可选):大于等于1且小于等于参数个数的整数,默认为1。
返回值
返回成功除非n大于参数个数或n小于1以及其他非法值。
例子
假设我们的脚本文件(test.sh)如下:
#!/usr/bin/env bash
# 显示前三个位置参数。
echo "$1 $2 $3"
# 移除前两个位置参数,并将$3重命名为$1,之后的以此类推。
shift 2
echo "$1 $2 $3"
在终端执行该脚本:
sh test.sh q w e r t
返回信息如下:
q w e
e r t
注意
- 该命令是bash内建命令,相关的帮助信息请查看
help命令。
shopt
显示和设置shell操作选项
补充说明
shopt命令 用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。
语法
shopt(选项)(参数)
选项
-s:激活指定的shell行为选项;
-u:关闭指定的shell行为选项。
参数
shell选项:指定要操作的shell选项。
实例
使用shopt命令显示当前所有可以设置的shell操作选项,输入如下命令:
shopt #输出所有可以设置的shell操作选项
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
dotglob off
execfail off
expand_aliases on
extdebug off
...
如图上所示,选项"cdspell"的状态为"off",即关闭cd拼写检查选项。现在,可以使用shopt命令将其开启,输入如下命令:
shopt -s cdspell #开启cd拼写检查
执行上面的命令后,该选项的状态将变为"on",即开启状态。可以再次通过该命令显示一下shell操作选项即可,输出信息如下:
cdspell on #开启cdspell选项
用户可以通过实际执行cd命令检查该选项是否被成功开启。
showmount
显示NFS服务器加载的信息
补充说明
showmount命令 查询“mountd”守护进程,以显示NFS服务器加载的信息。
语法
showmount(选项)(参数)
选项
-d:仅显示已被NFS客户端加载的目录;
-e:显示NFS服务器上所有的共享目录。
参数
NFS服务器:指定NFS服务器的ip地址或者主机名。
shuf
产生随机的排列。
概要
shuf [OPTION]... [FILE]
shuf -e [OPTION]... [ARG]...
shuf -i LO-HI [OPTION]...
主要用途
- 将输入的内容随机排列并输出。
- 当没有文件或文件为
-时,读取标准输入。
选项
-e, --echo 将每个ARG视为输入行。
-i, --input-range=LO-HI 将数字范围LO(最低)到HI(最高)之间的作为输入行。
-n, --head-count=COUNT 只输出前COUNT行。
-o, --output=FILE 将结果写入到文件而不是标准输出。
--random-source=FILE 将FILE中内容作为随机数据源。
-r, --repeat 输出行可以重复。
-z, --zero-terminated 行终止符为NUL(空字符)而不是默认的换行符。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
参数
FILE(可选):要处理的文件,可以为任意数量。
ARG(可选):作为输入行的字符串,可以为任意数量。
返回值
返回0表示成功,返回非0值表示失败。
例子
# 模拟硬币抛掷,获取前10个结果:
[user2@pc ~]$ shuf -r -n 10 -e "正面" -e "反面"
反面
正面
正面
正面
反面
反面
反面
正面
正面
正面
[user2@pc ~]$ shuf -i 1-35 -n 5|sort -n && shuf -i 1-12 -n 2|sort -n
4
17
20
29
31
6
11
注意
- 该命令是
GNU coreutils包中的命令,更多详细的帮助信息请查看man -s 1 shuf,info coreutils 'shuf invocation'。
shutdown
用来执行系统关机的命令
补充说明
shutdown命令 用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
语法
shutdown(选项)(参数)
选项
-c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
-f:重新启动时不执行fsck;
-F:重新启动时执行fsck;
-h:将系统关机;
-k:只是送出信息给所有用户,但不会实际关机;
-n:不调用init程序进行关机,而由shutdown自己进行;
-r:shutdown之后重新启动;
-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
参数
- [时间]:设置多久时间后执行shutdown指令;
- [警告信息]:要传送给所有登入用户的信息。
实例
指定现在立即关机:
shutdown -h now
指定5分钟后关机,同时送出警告信息给登入用户:
shutdown +5 "System will shutdown after 5 minutes"
skill
向选定的进程发送信号冻结进程
补充说明
skill命令 用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。
语法
skill(选项)
选项
-f:快速模式;
-i:交互模式,每一步操作都需要确认;
-v:冗余模式;
-w:激活模式;
-V:显示版本号;
-t:指定开启进程的终端号;
-u:指定开启进程的用户;
-p:指定进程的id号;
-c:指定开启进程的指令名称。
实例
如果您发现了一个占用大量CPU和内存的进程,但又不想停止它,该怎么办?考虑下面的top命令输出:
top -c -p 16514
23:00:44 up 12 days, 2:04, 4 users, load average: 0.47, 0.35, 0.31
1 processes: 1 sleeping, 0 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 0.0% 0.6% 8.7% 2.2% 0.0% 88.3% 0.0%
Mem: 1026912k av, 1010476k used, 16436k free, 0k shrd, 52128k buff
766724k actv, 143128k in_d, 14264k in_c
Swap: 2041192k av, 83160k used, 1958032k free 799432k cached
PID USER PRI NI SIZE RSS SHARE stat %CPU %MEM time CPU command
16514 oracle 19 4 28796 26M 20252 D N 7.0 2.5 0:03 0 oraclePRODB2...
既然您确认进程16514占用了大量内存,您就可以使用skill命令“冻结”它,而不是停止它。
slabtop
实时显示内核slab内存缓存信息
补充说明
slabtop命令 以实时的方式显示内核“slab”缓冲区的细节信息。
语法
slabtop(选项)
选项
--delay=n, -d n:每n秒更新一次显示的信息,默认是每3秒;
--sort=S, -s S:指定排序标准进行排序(排序标准,参照下面或者man手册);
--once, -o:显示一次后退出;
--version, -V:显示版本;
--help:显示帮助信息。
排序标准:
- a: sort by number of active objects
- b: sort by objects per slab
- c: sort by cache size
- l: sort by number of slabs
- v:sort by number of active slabs
- n: sort by name
- o: sort by number of objects
- p: sort by pages per slab
- s: sort by object size
- u: sort by cache utilization
知识扩展
内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况。
sleep
将目前动作延迟一段时间
补充说明
sleep命令 暂停指定的时间。
语法
sleep(参数)
参数
时间:指定要暂停时间的长度, 包括如下:
2s: 2秒2m: 2分钟2h: 2小时2d: 2天infinity: 永久
实例
有时在写一些以循环方式运行的监控脚本,设置时间间隔是必不可少的,下面是一个Shell进度条的脚本演示在脚本中生成延时。
#!/bin/bash
b=''
for ((i=0;$i<=100;i++))
do
printf "Progress:[%-100s]%d%%\r" $b $i
sleep 0.1
b=#$b
done
echo
slocate
命令查找文件或目录
补充说明
slocate命令 是一个命令查找文件或目录。slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法
slocate [-u][--help][--version][-d <目录>][查找的文件]
选项
-d<目录>或--database=<目录> 指定数据库所在的目录。
-u 更新slocate数据库。
--help 显示帮助。
--version 显示版本信息。
实例
使用指令"slocate"显示文件名中含有关键字"fdisk"的文件路径信息,输入如下命令:
$ slocate fdisk #显示文件名中含有fdisk关键字的文件的路径信息
执行以上命令后,指令执行的输出信息如下:
$ slocate fdisk #显示文件名中含有fdisk 关键字的文件的路径信息
/root/cfdisk #搜索到的文件路径列表
/root/fdisk
/root/sfdisk
/usr/include/grub/ieee1275/ofdisk.h
/usr/share/doc/util-Linux/README.cfdisk
/usr/share/doc/util-Linux/README.fdisk.gz
/usr/share/doc/util-Linux/examples/sfdisk.examples.gz
smbclient
交互方式访问samba服务器
补充说明
smbclient命令 属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。
语法
smbclient(选项)(参数)
选项
-B<ip地址>:传送广播数据包时所用的IP地址;
-d<排错层级>:指定记录文件所记载事件的详细程度;
-E:将信息送到标准错误输出设备;
-h:显示帮助;
-i<范围>:设置NetBIOS名称范围;
-I<IP地址>:指定服务器的IP地址;
-l<记录文件>:指定记录文件的名称;
-L:显示服务器端所分享出来的所有资源;
-M<NetBIOS名称>:可利用WinPopup协议,将信息送给选项中所指定的主机;
-n<NetBIOS名称>:指定用户端所要使用的NetBIOS名称;
-N:不用询问密码;
-O<连接槽选项>:设置用户端TCP连接槽的选项;
-p<TCP连接端口>:指定服务器端TCP连接端口编号;
-R<名称解析顺序>:设置NetBIOS名称解析的顺序;
-s<目录>:指定smb.conf所在的目录;
-t<服务器字码>:设置用何种字符码来解析服务器端的文件名称;
-T<tar选项>:备份服务器端分享的全部文件,并打包成tar格式的文件;
-U<用户名称>:指定用户名称;
-w<工作群组>:指定工作群组名称。
参数
smb服务器:指定要连接的smb服务器。
实例
列出某个IP地址所提供的共享文件夹
smbclient -L 198.168.0.1 -U username%password
像ftp客户端一样使用smbclient
smbclient //192.168.0.1/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。
直接一次性使用smbclient命令
smbclient -c "ls" //192.168.0.1/tmp -U username%password
和
smbclient //192.168.0.1/tmp -U username%password
smb:/>ls
功能一样的。
创建一个共享文件夹
smbclient -c "mkdir share1" //192.168.0.1/tmp -U username%password
如果用户共享//192.168.0.1/tmp的方式是只读的,会提示NT_STATUS_ACCESS_DENIED making remote directory /share1