快捷键
ctrl+A 光标移动到命令开头 ctrl+E 光标移动到命令结尾 ctrl+C 强制终止当前命令 ctrl+L 清屏 ctrl+U 剪切或删除光标之前的命令 ctrl+K 剪切或删除光标之后的命令 ctrl+Y 粘贴ctrl+U或ctrl+K ctrl+R 历史命令中搜索 ctrl+D 退出当前终端 ctrl+S 暂停屏幕输出 ctrl+Q 恢复屏幕输出
线上查询及帮助
[root@node85 ~]# man help (help command内建命令帮助)
NAME
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue,
declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history,
jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt,
source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in
commands, see bash(1)
后台进程管理
& ctrl + z jobs fg bg nohup
& 这个用在一个命令的最后,可以把这个命令放到后台执行 #ctrl+z 将一个正在前台执行的命令放到后台,并且暂停 #ctrl+c
#jobs 查看当前有多少在后台运行的命令 #fg(foreground) 将后台中的命令调至前台继续运行,如果后台有多个命令,可以用fg %job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid) #bg(background) 将一个在后台暂停的命令,变成继续执行,如果后台有多个命令,可以用bg %job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid) #nohup 该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为: nohup conmmand &
后台进程的终止:
1、通过jobs命令查看job号,然后执行kill %job
2、通过ps命令查看job的进程号,然后执行kill pid
进程管理
#ps report a snapshot of the current processes.
# ps -ef | head -3
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Apr22 ? 00:00:00 /sbin/init
root 2 0 0 Apr22 ? 00:00:00 [kthreadd]
# ps aux | head -3
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19356 1544 ? Ss Apr22 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S Apr22 0:00 [kthreadd]
#pstree display a tree of processes
# pstree 2615
httpd---8*[httpd]
#top #nice #renice #kill #killall #pkill
重定向
0 标准输入 /dev/stdin 文件描述符为0,使用<或<<,数据流向从右到左
1 标准输出 /dev/stdout 文件描述符为1,使用>或>>,数据流向从右到左
2 标准错误输出 /dev/stderr 文件描述符为2,使用2>或2>> 2后面不可有空格
/dev/null 黑洞,下面的方法相同
1> /dev/null 2>/dev/null
> /dev/null 2>&1 (使用此种居多)
&> /dev/null
command > filename 把标准输出重定向到一个文件中=command 1> filename
把标准输出重定向到一个文件中
command > filename 2>&1 把标准输出和错误输出一起重定向到一个文件中
command &> filename 把标准输出和错误输出一起重定向到一个文件中
command > filename1 2>filename2 把错误输出和标准输出放入不同文件
command 2>filename 把标准错误输出重定向到一个文件中
command filename2 以filename1作为标准输入,以filename2作为标准输出
command
command <
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command <&- 关闭标准输入
command >/dev/null
文件与目录操作处理
#ls 查看目录列表
-l 长格式显示
-i 显示每个文件的inode号
-ld 长格式显示目录的属性
-F append indicator (one of */=>@|) to entries 对不同的类型加标识符
-p 给目录加斜线
-lrt 最后一个是最新文件 t 时间排序 r 倒着排
--colour=auto 给不同颜色加颜色
-a 显示隐藏文件 -A同a,不显示 .及..
-S 根据文件大小排序
-t 以文件修改时间排序
--time-style=long-iso 长时间格式
#cd 路径切换
cd - 切换至上一次所在目录
#cp [-aifpru] 源 目标
默认alias成cp -i,有重名时提示是否覆盖。#/bin/cp和#\cp直接使用cp命令
-r 递归,用于复制目录
-p 保持属性
-a 相当于pdr
-a, --archive 等于-dR --preserve=all
--backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
-i, --interactive 覆盖前询问(使前面的 -n 选项失效)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
可能保持附加属性:环境、链接、xattr 等
-R, -r, --recursive 复制目录及目录内的所有项目
#find -type f文件、d目录 l连接、p管道、 c字符设备、b快文件、s socket文件
-a=and -o=or !=-not
-maxdepth #find /home/ -maxdepth 1
-perm # find ./ -perm 644
-name # find /home/ -name "*user*" 查找home目录下包含user的文件和目录
-iname 不区分大小写
-empty 空文件
-size #find /boot -size +2M
-newer file1 !file2 new于file1,旧于file2
-atime(acess time) 文件访问时间
-ctime(change time) 文件的索引节点(即属性)发生改变。ls -lc filename
-mtime (modify time) 文件文本内容发生变化。ls -lu filename
注意:#stat filename查看文件属性信息。#ls -l filename 列出文件的修改时间
find /目录 -type f或d -exec rm -f {} \; ==》“{”表示查找出的内容,“\”固定语法
find /目录 -type f或d | xargs rm -f
find /目录 -type f ! -name "filename" | xargs rm -f 保留一个文件
find /目录 -type f -name *.sh | xargs sed -i 's#a#b#g'
#mkdir 创建目录
-p 递归创建目录
-m 777 创建目录权限为777
-v, 每次创建新目录都显示信息
#mv move (rename) files
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;危险
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
#pwd
#rename rename from to file...
批量改文件名 stu_102999_1.finished.jpg取掉finished [# for i in `seq 10`;do touch stu_102999_$i.finished.jpg;done创建实验数据
方法a、脚本实现
for f in `ls *finished*.jpg'
do
mv $f `echo $f | sed 's#finished##g'
done
==># for f in `ls *finished*`;do mv $f `echo $f |sed s#finished##g`;done
方法b、
ls *.jpg | awk -F "-finished" '{print "mv " $0,$1$2} |bash 逗号等于空格
ls *.jpg | awk -F "-finished" '{print "mv " $0 " " $1$2} |bash
方法c
# find ./ -type f -name "*.finished*" | sed -r 's#(.*).finished(.*)# mv & \1\2#g' | bash
方法d
rename ".finished" "" *.jpg 即把需要去除的内容置为空
#rm
生产环境,尽量不用,一定要的话先备份,或者移动到一个临时目录,或者使用find 删除)
-f force无提示
-r 递归删除目录
rmdir 删除空目录
#rmdir remove empty directories
#touch 创建文件,若文件存在,更新时间戳
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
-a 或--time=atime或--time=access或--time=use 只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
#tree 结构化显示目录文件,通过yum install tree安装
-L 层数
-d 显示目录
#dirname
#dirname /usr/bin/sort ==> "/usr/bin"
#dirname stdio.h ==> "."
#basename
#basename /usr/bin/sort ==> "sort"
#basename include/stdio.h .h ==> "stdio"
#chattr 设置特殊属性 #lsattr
chattr +i filename 文件不可变,不可删除
chattr +a filename 设置文件只能添加内容
#file determine file type
#md5sum compute and check MD5 message digest
#ln
硬链接#ln 源文件 目标文件
软连接#ln -s 源文件 目标文件
查看文件和处理
cat rev tac more less head tail cut split paste sort uniq wc iconv dos2unix
file grep awk sed tee scp
#cat 查看文件内容 -n显示行号 -b显示行号(空行不编号) #tac 逆反,颠倒行序
#cat >> filename <#cat filename1 >>filename2
#cat filename1 filename2 >filename3
#cat >file1 (ctrl+D)
-v, --show-nonprinting DOS字符显示
use ^ and M- notation, except for LFD and TAB
-E, 行尾加$
-s, 压缩空行
-T, tab键以^I代替
#rev
# echo 123456 | rev
654321
#unix2dos UNIX to DOS text file format converter
#tee read from standard input and write to standard output and files标准输入并创建拷贝副本
tee - read from standard input and write to standard output and files标准输入并创建拷贝副本
tee [OPTION]... [FILE]...
-a 追加
# uname -a | tee -a uanme.txt 显示并追加到文件
#more
空格 一屏幕
b 返回一屏幕
回车 翻一行
= 显示当前行
/ 搜索
#less
#head
#tail
tail -15 filename
head -30 file name |tail -11 取20到30行
tail -f filename 跟踪文件尾部输出
#split 用于将大文件分割成多个小文件
#split -10 filename split 文件被分割成 splita splitb... splitj
#paste
#wc
-c 统计字节数(空格也算,另外会多统计一个),例如文件只包含a字符,统计结果是2个字节
-l 统计行数
-m 统计字符数,这个标志不能与 -c 标志一起使用。
-w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度
# echo www.baidu.com/1.html | wc
1 1 21 (行数 单词数 字符数)
#iconv 字符编码转换
-l列出当前支持的字符便面
#scp
-P 指定端口
-p Preserves modification times, access times, and modes from the original file.
-r Recursively copy entire directories.
#tar
tar -cf archive.tar foo bar
-c 建立压缩文件
-x 解开压缩文件
-t 查看压缩文件
-z gzip压缩
-f file
--exclude=file 排除文件
-X exclude from listfile
#unzip #gzip (扩展名为".gz")#zip
信息显示命令
uname hostname dmesg uptime file stat du df free date cal #uname -r内核 -m 位 -n主机名 -a所有
#hostname 查看主机名
#dmesg 查看内核打印的错误信息 dmesg是一种程序,用于检测和控制内核环缓冲。程序用来助用户了解系统的启动信息。 Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。可利用dmesg来查看。可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。 dmesg | grep sd 过滤硬盘设备 dmesg | grep -i usb | head -15 dmesg | grep -i dma | head -15 dmesg | grep -i tty | head -15 dmesg | grep -i memory | head -15 dmesg -c #清ring buffer,不会清‘/var/log/dmesg’文件中的日志,连接新的设备都会产生dmesg日志输出。 -h:以人类可读的方式显示 -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小 -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小 -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和 -l :统计硬链接占用磁盘空间的大小 -L:统计符号链接所指向的文件占用的磁盘空间大小 #df -h:以人类可读的方式显示 -i:显示inode信息 -T:显示出文件系统类型 --sync:先执行sync后统计使用信息 #date #date +%H:%M:%S 06:17:33 # date +%F 2017-02-19 # date +%Y/%m/%d 2017/02/19 # date +%F -d "+2day" 2017-02-21 # date +%F -d "-2day" 2017-02-17 #cal displays a calendar
搜索文件命令
which find whereis locate #which 查找命令所在路径 搜索全局变量PATH的路径(小窍门:在某目录建立文件并加可执行,并且export PATH临时加入路径,就可以which了) # which cp alias cp='cp -i' /bin/cp #whereis locate the binary, source, and manual page files for a command [root@node81 home]# whereis cp cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz [root@node81 home]# whereis -b cp -b Search only for binaries. #locate(设置列gid) 查找命令所在路径或信息从/var/lib/mlocate/mlocate.db中查找,updatedb更新
用户管理命令
useradd usermod userdel groupadd passwd chage id su sudo visudo #visudo 即编辑sudo配置文件(/etc/sudoers) -c检查语法 #sudo sudo授权后,执行命令时需要命令前带sudo #useradd (#usermod改变属性) #userdel -r 删除用户连家目录 -c 建立时可以对账号进行描述 已有的用usermod -c -d 指定家目录 -e 账号过期时间 -f 几日后停权 -g 指定组(不再创建自身组) -G 定义为多个组,逗号分开 -m 指定家目录 -M 不创建家目录 -s 指定shell -u 指定uid #groupadd #groupdel #passwd #chage -l username 查看用户账号密码过期信息 -E 更改账户过期时间 #id # useradd gtms -G root # id gtms uid=500(gtms) gid=500(gtms) groups=500(gtms),0(root) #su
查看用户登录信息的命令
whoami who w last lastlog users finger
#whoami 显示当前用户 print effective userid
root
#who 显示当前登录的所有用户show who is logged on
root pts/0 2017-02-04 21:09 (192.168.0.102)
root pts/1 2017-02-04 23:17 (192.168.0.102)
#w Show who is logged on and what they are doing.
23:25:01 up 2:16, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.0.102 21:09 2:06 0.33s 0.00s man users
root pts/1 192.168.0.102 23:17 0.00s 0.00s 0.00s w
#last 显示最近登录用户show listing of last logged in users
gtms pts/2 192.168.0.102 Sat Feb 4 23:27 still logged in
root pts/1 192.168.0.102 Sat Feb 4 23:17 still logged in
root pts/0 192.168.0.102 Sat Feb 4 21:09 still logged in
reboot system boot 2.6.32-573.el6.x Sat Feb 4 21:08 - 23:28 (02:19)
root pts/1 192.168.0.102 Sat Feb 4 04:36 - down (02:46)
#lastlog - reports the most recent login of all users or of a given user
lastlog | tail -3 显示所有用户最近一次登录情况
sshd **Never logged in**
tcpdump **Never logged in**
gtms pts/2 192.168.0.102 Sat Feb 4 23:27:01 +0800 2017
#users 查看当前登录的用户列表,仅显示用户名
gtms root root
#finger 查看用户信息- user information lookup program (需要yun install)
#finger gtms
Login: gtms Name:
Directory: /home/gtms Shell: /bin/bash
On since Sat Feb 4 23:27 (CST) on pts/2 from 192.168.0.102
8 minutes 41 seconds idle
No mail.
No Plan.
基础网络操作命令
基础网络操作命令 telnet ssh wget ping route ifconfig ifup ifdown netstat #telnet #ssh #wget --spider URL 爬虫,检查网站是不是好的,不下载 --tries 指定重试的次数 -q -T,–timeout=SECONDS 设置超时时间 -r,–recursive 下载整个网站、目录(小心使用) –http-user=USER 设置HTTP用户 –http-passwd=PASS 设置HTTP密码 –proxy-user=USER 设置代理用户 –proxy-passwd=PASS 设置代理密码 #ping -c 指定次数 -i 指定间隔 -R 显示路由过程 -I 指定网络接口 #route route add default gw {IP-ADDRESS} {INTERFACE-NAME} 设定默认路由 route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}指定网络的路由规则 http://oldboy.blog.51cto.com/2561410/1119453 http://oldboy.blog.51cto.com/2561410/974194 #ifconfig #ifup #ifdown #ip addr ip addr { add | del } IPADDR dev STRING #ip addr add 192.168.0.26/24 dev eth0 加的用ip add查看(重启失效) #ip addr del 192.168.0.26/24 dev eth0 #ifconfig eth0 add 192.168.0.22 (最多好像只能一个,但是加的看的到) (重启失效) #ifconfig eth0:0 del 192.168.0.22 #netstat -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。 深入网络操作命令 nmap lsof route mail mutt nslookup dig host tracerroute fuser #nmap nmap [Scan Type(s)] [Options] {target specification} nmap 192.168.0.1-100 扫描地址段 --exclude ip 排除ip -p 扫描指定端口 -sV 扫描时显示打开的服务版本号 #lsof 文件系统挂载点 lsof /boot COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1787 root cwd DIR 8,1 1024 12 /boot/grub vi 1815 root cwd DIR 8,1 1024 12 /boot/grub vi 1815 root 4u REG 8,1 12288 39 /boot/grub/.grub.conf.swp lsof -p 30297 显示那些文件被pid为30297的进程打开 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr| more 查看各个进程打开文件句柄的数目,若进程打开文件 句柄的数目超过系统限制,则相应进程不能正常服务 lsof命令后直接接文件名,可以查到该文件被哪些进程打开: lsof -i:port 查看端口 [root@node90 home]# umount /dev/cdrom umount: /tmp: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@node90 home]# fuser /dev/cdrom [root@node90 home]# fuser /tmp [root@node90 home]# lsof /tmp COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1649 root cwd DIR 11,0 528384 1984 /tmp/Packages #fuser identify processes using files or sockets #mail #mutt强大的mail客户端 -s 邮件标题 mail -s test [email protected] 编辑完内容后Ctrl-D结束 echo “mail content”|mail -s test [email protected] mail -s test [email protected]< file yum install -y sharutils带附件 uuencode /home/log.txt log.txt | mail -s logstat [email protected] #nslookup query Internet name servers interactively #dig DNS lookup utility 查询域名的A记录 CNAME,MX记录信息 #host 将域名解析为ip #tracerroute print the route packets trace to network host
有关磁盘与文件系统的命令
mount umount df du fsck dd dumpe2fs dump fdisk parted mkfs partprobe e2fsck sync resize2fs blkid #mount 查看内核追踪到的已挂载的所有设备:cat /proc/mounts #umount 命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要挂载的设备; (1) 设备文件:例如/dev/sda5 (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA' (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e' (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs 常用命令选项: -t vsftype:指定要挂载的设备上的文件系统类型; -r: readonly,只读挂载; -w: read and write, 读写挂载; -n: 不更新/etc/mtab; -a:自动挂载所有支持自动挂载的设备;定义在/etc/fstab,且挂载选项中有“自动挂载”功能 -L 'LABEL': 以卷标指定挂载设备; -U 'UUID': 以UUID指定要挂载的设备; -B, --bind: 绑定目录到另一个目录上; -o options:(挂载文件系统的选项,逗号分隔,defaults:rw, suid, dev, exec, auto, nouser, and async) async:异步模式; sync:同步模式; atime/noatime:包含目录和文件; diratime/nodiratime:目录的访问时间戳 auto/noauto:是否支持自动挂载 exec/noexec:是否支持将文件系统上应用程序运行为进程 dev/nodev:是否支持在此文件系统上使用设备文件; suid/nosuid:是否支持在此文件系统上使用特殊权限 remount:重新挂载 ro:只读 rw:读写 user/nouser:是否允许普通用户挂载此设备 acl:启用此文件系统上的acl功能 #fsck check and repair a Linux file system 不要检查好的磁盘,切记卸载状态检查 -a:自动修复文件系统,不询问任何问题; -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; -C : 显示完整的检查进度 -N:不执行指令,仅列出实际执行会进行的动作; -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统; -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; -s:依序执行检查作业,而非同时执行; -t<文件系统类型>:指定要检查的文件系统类型; -T:执行fsck指令时,不显示标题信息; -V:显示指令执行过程。 #e2fsck check a Linux ext2/ext3/ext4 file system ,umount状态,根目录则需要单用户模式 -a: 检查 partition,如发现问题会自动修复。 -b: 设定 superblock 位置。 www.2cto.com -B size: 指定 size 作为区块大小。 -c: 检查 partition 是否有坏轨。 -C file: 将检查结果储存到 file。 -d: 输出 e2fsck debug 结果。 -f: e2fsck 预设只会对错误的档案系统检查,加上 -f 是强制检查。 -F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。 -l list: 记录了坏轨区块加入 list 中。 -d : 打印 e2fsck 的 debug 结果。 -f : 强制检查。 -n: 以 (read-only) 开启档案系统 -p: 关闭互动模式,如有问题自动修复,等同 -a。 -v: 显示详细报告。 -y: 启用使用者互动模式。 #dd convert and copy a file /dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需 要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。 /dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息 以标准输出显示或写入文件,那么可以将消息重定向到位桶。外 dd if=/dev/zero of=tmp.5G bs=1G count=5 从/dev/zero每次读取1G数据,读5次,写入tmp.5G if=FILE 指定输入文件,若不指定则从标注输入读取。 of=FILE 指定输出文件,若不指定则输出到标准输出 bs=BYTES 每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs 指定,若使用bs,则表示是ibs和obs都是用该参数 ibs=bytes 一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes 一次输出bytes个字节,即指定一个块大小为bytes个字节。 count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数) 整盘备份 dd if=/dev/hdb of=/dev/hdd /dev/hdb整盘备份到/dev/hdd dd if=/dev/hdb of=/root/image 将/dev/hdb全盘备份到image文件dd if=/dev/hdb | gzip > /root/image.gz dd if=/root/image of=/dev/hdb 恢复。gzip -dc /root/image.gz | dd of=/dev/hdb MBR备份 dd if=/dev/hda of=/root/image count=1 bs=512 备份磁盘开始的512个字节大小的MBR信息到指定文件 count=1指仅拷贝一个块;bs=512指块大小为512个字节。 dd if=/root/image of=/dev/had 将备份的MBR信息写到磁盘开始部分 备份软盘 dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M) 拷贝内存内容到硬盘 dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k) 拷贝光盘,并保存为cd.iso文件 dd if=/dev/cdrom(hdc) of=/root/cd.iso 增加swap分区文件大小 第一步:创建一个大小为256M的文件:dd if=/dev/zero of=/swapfile bs=1024 count=262144 第二步:把这个文件变成swap文件:mkswap /swapfile 第三步:启用这个swap文件:swapon /swapfile 编辑/etc/fstab文件,使在每次开机时自动加载swap文件:/swapfile swap swap default 0 0 销毁磁盘数据, 利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。 dd if=/dev/urandom of=/dev/hda1 测试硬盘的读写速度 dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file dd if=/root/1Gb.file bs=64k | dd of=/dev/null 通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。 确定硬盘的最佳块大小: dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file 通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。 修复硬盘: dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda 当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。 利用netcat远程备份 dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234 在源主机上执行此命令备份/dev/hda netcat -l -p 1234 | dd of=/dev/hdc bs=16065b 在目的主机上执行此命令来接收数据并写入/dev/hdc netcat -l -p 1234 | bzip2 > partition.img netcat -l -p 1234 | gzip > partition.img 以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。 将一个很大的视频文件中的第i个字节的值改成0x41(也就是大写字母A的ASCII值) echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc #dumpe2fs dump ext2/3/4 filesystem information -h 只显示超级快信息 #dump ext2/3/4 filesystem backup #disk artition table manipulator for Linux -l 查看磁盘及分区 #parted 6块600g raid5 损失一块盘共3T,raid界面做部分做虚拟磁盘 200G分区装系统。其他parted分区 GPT分区: GPT,全局唯一标识分区表(GUID Partition Table),GUID,与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB。(大于16T 使用XFS e2fsprogs) [root@localhost ~]# rpm-qf `which parted` parted-3.1-20.el7.x86_64 查看parted命令的帮助信息: [root@localhost ~]#parted --help或 [root@localhost ~]#parted GNU Parted 3.1 Using /dev/sda Welcome to GNU Parted!Type 'help' to view a list of commands. (parted) help (parted) quit #退出 #开始通过parted工具来对磁盘进行操作 [root@localhost ~]#parted -l [root@localhost ~]#parted /dev/sdb GNU Parted 3.1 Using /dev/sdb Welcome to GNU Parted!Type 'help' to view a list of commands. (parted) p #查看磁盘分区状态 Error: /dev/sdb:unrecognised disk label (parted) mklabel #指定创建分区表类型为GPT New disk label type? gpt (parted) mkpart #创建分区 Partition name? []? mydisk1 File system type? [ext2]? #指定分区文件系统类型,默认就可以,因为后期对分区进行格式化的时候,同样可以指定 Start? 1 #指定分区起始位置 End? 100M #指定分区结束位置 (parted) p #查看磁盘分区状态 Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB mydisk1 (parted) mkpart Partition name? []? 2 File system type? [ext2]? Start? 100M End? 200M (parted) p Model: VMware, VMwareVirtual S (scsi) Disk /dev/sdb: 21.5GB Sector size(logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 99.6MB 98.6MB mydisk1 2 99.6MB 200MB 101MB 2 (parted) quit Information: You mayneed to update /etc/fstab. parted快速分区 parted /dev/sdb mklabel gpt yes parted /dev/sdb mkpart primary ext4 1 1000 ignore parted /dev/sdb mkpart primary ext4 1001 2000 ignore parted /dev/sdb 查看 #mkfs build a Linux file system -t<文件系统类型> 指定要建立何种文件系统; -c: 在制做档案系统前,检查该partition是否有坏轨。 #partprobe inform the OS of partition table changes #sync flush file system buffers #resize2fs ext2/ext3/ext4 file system resizer #blkid 显示磁盘分区与UUID对应信息及文件系统类型 关机和查看系统信息的命令 #shutdown #halt #init 系统安全相关 chmod chown chgrp chage passwd su sudo umask chattr lsattr #chmod change file mode bits chmod u+x,g=x,o-x file name -R 递归 #chown change file owner and group -R 递归 chown root /u chown root:staff /u chown -hR root /u #chgrp change group ownership -R 递归 chgrp staff /u chgrp -hR staff /u #umask 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是 umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置 的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、 $[HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。 文件默认权限=666减umask 目录默认权限=777减umask umask: umask [-p] [-S] [mode] Display or set file mode mask. [root@shell ~]# umask -p umask 0022 [root@shell ~]# umask -S u=rwx,g=rx,o=rx
其他 echo print rpm yum watch alias unslias date clear #history (配置文件需要source)/etc/profile ~/.bash_history 默认1000 相对来说越少越安全/etc/profile =>HISTSIZE=1000 -c 清空历史记录 -d 数字 清除那一行
-w 将缓存命令写入文件中 ~/.bash_history export HISTSIZE=10 临时控制当前历史记录回滚数 export HISTFILESIE=10 临时控制历史记录文件的命令数量变量cat ~/.bash_history
!n 重复执行第n条历史命令
!! 重复执行上一条命令
!string 重复执行最后一条以该字符串开头的命令
#eject eject removable media #time time a simple command or give resource usage #nc arbitrary 随意的TCP and UDP connections and listens 常见使用 1、远程拷贝文件 [root@hatest2 tmp]# nc -lp 1234 > install.log 将接收到的文件名字定为install.log [root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log 将install.log发送给hatest2 2、克隆硬盘或分区 操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。 克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后,在server2上进行类似的监听动作: # nc -l -p 1234 | dd of=/dev/sda server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务: # dd if=/dev/sda | nc 192.168.228.222 1234 ※ 完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。 3、端口扫描 # nc -v -w 1 192.168.228.222 -z 1-1000 hatest2 [192.168.228.222] 22 (ssh) open 4、保存Web页面 # while true; do nc -l -p 80 -q 1 < somepage.html; done 5、模拟HTTP Headers(类似curl -I,但是没有用) [root@hatest1 ~]# nc www.linuxfly.org 80 6、聊天(Ctrl+D正常退出) nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听: [root@hatest2 tmp]# nc -lp 1234 server1上传输: [root@hatest1 ~]# nc 192.168.228.222 1234 7、传输目录 从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,server2上运行: 引用[root@hatest2 tmp]# nc -l 1234 |tar xzvf - server1上运行: 引用[root@hatest1 ~]# ll -d nginx-0.6.34 drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34 [root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234 8、参数简介 这仅是一个1.10版本的简单说明,详细的参数使用还是需要看man: 引用想要连接到某处: nc [-options] hostname port[s] [ports] ... 绑定端口等待连接: nc -l -p port [-options] [hostname] [port] 参数: -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, ... -h 帮助信息 -i secs 延时的间隔 -l 监听模式,用于入站连接 -n 指定数字的IP地址,不能用hostname -o file 记录16进制的传输 -p port 本地端口号 -r 任意指定本地及远程端口 -s addr 本地源地址 -u UDP模式 -v 详细输出——用两个-v可得到更详细的内容 -w secs timeout的时间 -z 将输入输出关掉——用于扫描时,其中端口号可以指定一个或者用lo-hi式的指定范围。 9、1.84版本参数简介1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] 2. [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x 3. proxy_address[:port]] [hostname] [port[s]] 1. -4 强制使用ipv4 2. -6 强制使用ipv6 3. -D 允许socket通信返回debug信息 4. -d 不允许从标准输入中读取 5. -h 显示nc帮助文档 6. -i interval 7. 指定每行之间内容延时发送和接受,也可以使多个端口之间的连接延时 8. -k 当一个连接结束时,强制nc监听另一个连接。必须和-l一起使用 9. -l 用于监听传入的数据链接,不能与-p -z -s一起使用。-w 参数的超时也会被忽略 10. -n 不执行任何地址,主机名,端口或DNS查询 11. -p 指定nc使用的源端口,受权限限制且不能余-l一起使用 12. -r 指定nc使用的源端口和目的端口,不能使用系统原来就指定的那些端口 13. -S 允许在RFC 2385的TCP MD5签名选项 14. -s source_ip_address 15. 指定用于发包的接口的IP地址,不能和-l一起使用 16. -T ToS 17. 指定链接的IP服务类型(TOS) 18. -C 自动换行 19. -t 使nc能够与telnet交互 20. -U 使用UNIX域socket 21. -u 使用udp代替默认的tcp选项 22. -v 输出详细报告 23. -w timeout 24. 一个链接一段时间无操作,则自动断开,默认无超时 25. -X proxy_version 26. 指定nc使用代理时所采用的协议,可选的有socksv4,socks5以及https。默认socks5 27. -x proxy_address[:port] 28. 指定nc使用的代理地址和端口。默认设置:1080(SOCKS),3128(HTTPS) 29. -z 只监听不发送任何包 三、版本差异 不用系统上提供的nc版本会有说不同,其提供的参数使用方法也略有差异。 例如,红旗Asianux 3.0 SP1拯救光盘上的版本是供使用的参数仅有一部分: 引用# nc -h BusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binary Usage: nc [OPTIONS] [IP] [port] Netcat opens a pipe to IP:port Options: -l listen mode, for inbound connects -p PORT local port number -i SECS delay interval for lines sent -e PROG program to exec after connect (dangerous!) -w SECS timeout for connects and final net reads 而在Asianux 3.0 SP1系统中提供的nc版本则是1.84的,按上面的参数用法写会执行不了: 引用[root@ftpserver ~]# rpm -q nc nc-1.84-10 [root@ftpserver ~]# nc -lp 1234 usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version] [-x proxy_address[:port]] [hostname] [port[s]] 讲查看man文档,可见在这个版本中,-l是不能与-s、-p、-z一起使用的,-w参数也会被忽略,所以,正确的用法是: [root@ftpserver tmp]# nc -l 1234 四、用在脚本中 nc每次启动监听后,都会在客户端连接完成并退出的同时,服务端一同退出。所以,如果需要不断的使用nc进行数据传输,需要在脚本中使用循环。利用nc实现更多的功能,可参考其rpm提供的参考脚本: 引用# rpm -qd nc /usr/share/doc/nc-1.10/Changelog /usr/share/doc/nc-1.10/README /usr/share/doc/nc-1.10/scripts/README /usr/share/doc/nc-1.10/scripts/alta /usr/share/doc/nc-1.10/scripts/bsh /usr/share/doc/nc-1.10/scripts/dist.sh /usr/share/doc/nc-1.10/scripts/irc /usr/share/doc/nc-1.10/scripts/iscan /usr/share/doc/nc-1.10/scripts/ncp /usr/share/doc/nc-1.10/scripts/probe /usr/share/doc/nc-1.10/scripts/web /usr/share/doc/nc-1.10/scripts/webrelay /usr/share/doc/nc-1.10/scripts/websearch /usr/share/man/man1/nc.1.gz #xargs build and execute command lines from standard input 管道是实现“将前面的标准输出作为后面的标准输入” xargs是实现“将标准输入作为命令的参数” 代码:(效果不同) echo "--help"|cat echo "--help"|xargs cat
xargs -n 2 < file 2个为一行 #exec Replace the shell with the given command. 很强大,但是一般配合find用的多些 find ./ -name "*.tmp" -exec rm -rf "{}" \; exec [-cl] [-a name] [command [arguments ...]] [redirection ...] 相等于清空现有环境,重新起一个新的shell -a name pass NAME as the zeroth argument to COMMAND -c execute COMMAND with an empty environment -l place a dash in the zeroth argument to COMM 注意,对文件描述符进行的操作时,才不会覆盖当前shell #!/bin/bash #exec与文件描述符结合使用 exec 3<&0 0<name.txt read line1 read line2 exec 0<&3 echo $line1 echo $ine2 set 用来显示本地变量,set 显示当前shell的变量,包括当前用户的变量 env 用来显示环境变量,env 显示当前用户的变量 export 用来显示和设置环境变量,export 显示当前导出成用户变量的shell变量 #export 用于创建传给shell的变量Set export attribute for shell variables. -- 选项结束 -f 表明在“名-值”对中的名字是函数名 -n 全局转局部,不再传给shell -p 显示全部全局变量列表 #unset unset设置或重设各种变量Set or unset values of shell options and positional parameters. [root@shell ~]# set 查看当前变量 [root@shell ~]#readonly 显示或设置只读变量 [root@shell ~] #readonly variable-name 设置只读变量 unset 取消变量定义 -f 删除自定义的只读变量 #type type命令用来显示指定命令的类型。一个命令的类型可以是如下几种: alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shell内建命令 file 文件,磁盘文件,外部命令 unfound 没有找到 常用参数 type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。 type -p只返回外部命令的信息,相当于which命令。 type -f只返回shell函数的信息。 type -t 只返回指定类型的信息。 [root@node90 home]# type useradd useradd is /usr/sbin/useradd [root@node90 home]# type -a cp cp is aliased to `cp -i' cp is /bin/cp #bc An arbitrary precision calculator language bc 进入交互模式 bc -q 如果需要bc不输出提示信息,可以加上-q参数 bc -l 如果要使用强大的数学库,比如计算三角函数,需要加上-l参数
#echo 打印输出内容 #echo {a..z} #echo aaa{1..10} #mkdir aaa{001..100} -n 不换行(两个echo 用分号分开执行时) -e 支持转义
\\ 输出本身
\a 输出警告
\b 退格键,也就是向左删除键# echo -e "ab\bc" ==>ac
\c 不换行
\e escape键
\f 换页符号
\n 换行符号
\r 回车符号
\t 制表符
\v 垂直制表符
\0nnn 八进制输出
\xhh 十六进制输出
# echo -e "gtms\tgtms" \n回车 \b 退格 gtms gtms
#printf format and print data #rpm linux rpm软件安装卸载工具,最大问题,依赖性不好解决 常用命令组合: -ivh:安装显示安装进度--install--verbose--hash -Uvh:升级软件包--Update; -qpl: 列出RPM软件包内的文件信息[Query Package list]; -qpi:列出RPM软件包的描述信息[Query Package install package(s)]; -qf:查找指定文件属于哪个RPM软件包[Query File]; -Va:校验所有的 RPM软件包,查找丢失的文件[View Lost]; e:删除包 #yum linux的包管理器,原理是下载包,然后调用rpm包,如需依赖包,一并下载安装 yum update -y更新补丁,未投入前可使用(可能会升次版本) yum grouplist yum groupinstall包组 yum search 关键字 yum remove (不要用,依赖的包也会被干掉) #watch execute a program periodically, showing output fullscreen -n 指定间隔,默认2s -d 高亮显示变化的区域。而-d=cumulative会把变动过的地方(不管最近的那次有无变动)都高亮显示 -t 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。 使用实例: watch -n 1 -d netstat -ant 每隔一秒高亮显示网络链接数的变化情况 watch -n 1 -d 'pstree|grep http' 每隔一秒高亮显示http链接数的变化情况 watch 'netstat -an | grep :21 | \ grep<模拟攻击客户机IP>| wc -l'实时看模拟攻击客户机建起来的连接数 watch -d 'ls -l|grep scf' 监测当前目录中 scf' 的文件的变化 watch -n 10 'cat /proc/loadavg' 10秒一次输出系统的平均负载 #alias 别名 #unalias 所有用户生效:/etc/bashrc或 /etc/profile 生效#source /etc/profiles。用户自定义~/.bashrc
# alias显示当前设置的别名(\cp或/bin/cp) alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@shell ~]#alias test="echo this is a test." 设置别名 [root@shell ~]#unalias test 取消别名 [root@shell ~]#alias rm="echo 'rm cannot be used,please use mv'"
#read 从键盘或文件的某一行中读入信息,并将其赋值给一个变量
-p ”提示信息“
-t 超时时间s
-n 只接收指定的字符数,就会执行,而不是回车
-s 隐藏输入的数据 read variable1 variable2 如果给出多个变量名,会按顺序赋值,分隔符为空格 #!/bin/bash echo -n "First Name:" read firstname echo -n "Last Name:" read lastname echo -e "Your First Name is :$firstname\n" echo -e "Your Last Name is :$lastname\n" #vi =编辑工具 光标移动 crtl +f 向下翻屏 crtl+b 向上翻屏 n<空格键> 向后移动n个字符 0或home键 移动到行首 G 移动到末行 nG 移动到n行,配合set nu n 回车 向下移动n行 查找与替换 /word 向下查找关键字 n继续查找 ?/word 向上查找关键字 N继续查找 :2,4s/word1/word2/g 在2到4行全局替换关键字 :1,$s/word1/word2/gc 全文替换并依次手工确认 删除、复制、粘贴 x 向后删除一个字符 X向前 nx向后删除n个字符 dd删除光标所在行 ndd删除后n行 yy复制光标所在行 nyy复制后n行 p 在光标下一行粘贴复制的内容 u 撤销一个操作 #seq seq -s指定序列分隔符 seq -w 在列前添加0 使得宽度相同 [root@node81 ~]# seq -s "@" 5 1@2@3@4@5 [root@node90 home]# seq 1 3 11 3为步长 1 4 7 10 [root@node90 home]# seq 2 5 2 3 4 5 #eval 1.eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。 2.eval也可以用于回显简单变量,不一定时复杂变量。 NAME=ZONE eval echo $NAME等价于echo $NAME 3.两次扫描 test.txt内容:hello shell world! myfile="cat test.txt" (1)echo $myfile #result:cat test.txt (2)eval echo $myfile #result:hello shell world! 从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令 4.获得最后一个参数 echo "Last argument is $(eval echo \$$#)" echo "Last argument is $(eval echo $#)" (yum install tree nmap sysstat lrzsz dos2unix(这些是包名) -y) yum update可能 linux版本也会更新,线上的尽量不做,除非有已知安全漏洞 ! !+字母调出 最近一次以此字母开头的命令 !!使用最近一次操作的命令 !+n 调出历史的第n条命令 {} 输出数字或字符序列 getenforce 检查selinux状态 setenforce 设置selinux状态 1启用 0警告 不启用 runlevel 显示当前运行模式 init 切换运行级别,后面接相应级别数字 iptables diff vimdiff 文件比较 ntpupdate ulimit -n查看文件描述符数量 ulimit -a 查看当前shell资源限制 declare (同typeset) declare: declare [-aAfFilrtux] [-p] [name[=value] ...] Set variable values and attributes. Declare variables and give them attributes. If no NAMEs are given, display the attributes and values of all variables. Options: -f restrict action or display to function names and definitions只显示函数名及定义 -F restrict display to function names only (plus line number and只显示函数名称 source file when debugging) -p display the attributes and value of each NAME 显示名称及值 Options which set attributes: -a to make NAMEs indexed arrays (if supported) -A to make NAMEs associative arrays (if supported) -i to make NAMEs have the `integer' attribute 创建整数属性变量 -l to convert NAMEs to lower case on assignment -r to make NAMEs readonly 创建只读变量 -t to make NAMEs have the `trace' attribute -u to convert NAMEs to upper case on assignment -x to make NAMEs export 创建转出变量 Using `+' instead of `-' turns off the given attribute.使用加减取反 shift 用于移动变量位置$3的值传给$2 getopts #!/bin/bash All=false HELP=false FILE=false VERBOSE=false while getopts ahfvc: OPTION do case $OPTION in a) ALL=true echo "ALL is $ALL" ;; h) HELP=true echo "HELP is $HELP" ;; f) FILE=true echo "FILE is $FILE" ;; v) VERBOSE=true echo "VERBOSE is $VERBOSE" ;; c) c=$OPTION echo "c value is $c" ;; *) echo "`basename $0` -[a h f c] -[c value] file" ;; esac done #ldd
lsmod
lsmod [root@node85 ~]# rpm -qf /sbin/lsmod module-init-tools-3.9-25.el6.x86_64 [root@node85 ~]# rpm -ql module-init-tools | grep sbin /sbin/depmod /sbin/insmod /sbin/insmod.static /sbin/lsmod program to show the status of modules in the Linux Kernel /sbin/modinfo /sbin/modprobe /sbin/rmmod /sbin/weak-modules lsmod program to show the status of modules in the Linux Kernel modprobe program to add and remove modules from the Linux Kernel -r 移除模块 depmod program to generate modules.dep and map files modinfo program to show information about a Linux Kernel module 如下需要清楚模块关系及路径等 insmod (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/) rmmod (全路径) [root@node85 ~]# lsmod | grep vfat [root@node85 ~]# modprobe vfat [root@node85 ~]# lsmod | grep vfat vfat 10584 0 fat 54992 1 vfat [root@node85 ~]# modprobe -r vfat [root@node85 ~]# lsmod | grep vfat 如下需要清楚模块关系及路径等 insmod (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/) rmmod (全路径) vfat依赖fat模块,需要先加载 [root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/ fat.ko msdos.ko vfat.ko [root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko insmod: error inserting '/lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko': -1 Unknown symbol in module [root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/fat.ko [root@node85 ~]# lsmod | grep fat fat 54992 0 [root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko [root@node85 ~]# lsmod | grep fat vfat 10584 0 fat 54992 1 vfat
http://man.linuxde.net/