Linux-Unix系统操作与维护常用命令
(关注常用、实用目录)
进入系统后,用root用户操作: fdisk -l 会看到有一块新的设置,如果你先前有一块硬盘(sda, sda1...),新加的这块应该是(/dev/sdb)如果还有其它硬盘就会依次递增(/dev/sdc, /dev/sdd....)。
# fdisk /dev/sdb
进入fdisk模式:
Command (m for help):m //查看fdisk命令帮助
Command (m for help):n //创建新分区
Command action:
e extended //输入e为创建扩展分区
p primary partition (1-4) //输入p为创建主分区,这里我们选择p
Partion number(1-4):1 //第一个扩展分区,按需求可以最多分4个主分区
First Cylinder(1-1014,default 1): 1 //第一个主分区起始的磁盘块数,可以选择默认值
Last cylindet or +siza or +sizeM or +sizeK: +1024MB //定义该分区的大小,如果按默认(按回车)即是使用全部可用存储额,也可以是用M或m单位结尾的数字(大写M是大B的意思,如果输入1M实际上是X8也就是8m的空间),这样我们就创建完一个分区,如果要创建更多分区可以照上面的步骤继续创建。所有分区创建完后用w保存分区。
Command (m for help): w
The partition table has been altered!
保存完成后重启服务器,可以用#fdisk -l 命令检查刚刚所建分区,可以在返回结果中确认/dev/sdb1的信息。
键入:mkfs -t ext3 /dev/sda3
格式化指定的分区,依次类推,现在的系统大部分都是 ext3 格式
手动挂载,则键入:mount /dev/sda3 /home/work/
"表示将该新分区挂载到/home/work/这个目录下面"
开机自动挂载,则修改/etc/fstab文件,在这个文件里面添加一行:
/dev/sda3 /home/work ext3 defaults, 1 2 如:
vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 /swap swap defaults 0 0
/dev/sda3 /home/work ext3 defaults 1 2
fstab中存放了与分区有关的重要信息,其中每一行为一个分区记录,每一行又可分为六个部份,下面以/dev/hda7 / ext2 defaults 11为例逐个说明:
1. 第一项是您想要mount的储存装置的实体位置,如hdb或如上例的/dev/hda7。
2. 第二项就是您想要将其加入至哪个目录位置,如/home或如上例的/,这其实就是在安装时提示的挂入点。
3. 第三项就是所谓的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如上例的ext2,可以参见/prco/filesystems说明。
4. 第四项就是您mount时,所要设定的状态,如ro(只读)或如上例的defaults(包括了其它参数如rw、suid、exec、auto、nouser、async),可以参见「mount nfs」。
5. 第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。
6. 第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它皆可视需要设定,内定值是0。
查看系统当前的环境变量:env
查看变量的值:echo $变量名
设置环境变量: export 变量名=”Hello!”
清除环境变量:unset $变量名
常用预定义环境变量:
PATH 当前用户的主目录
HOME 当前用户的可执行文件搜索路径
LANG 系统使用的默认语言
SHELL 系统默认的shell。
环境变量设置文件
全局环境变量,对所有Linux用户有效,设置文件:/etc/profile、/etc/bashrc(bash,ksh对应的文件为/etc/kshrc)
用户环境变量,只对当前用户有效,设置文件为当前用户主目录(~)下的:.profile、.bash_profile、.bashrc(bash,ksh对应的文件为.ksh_profile、.kshrc)
登录shell:作为Linux用户登录到Linux操作系统,或者用su - username切换到其他用户,都为登录shell,环境变量也同时切换。
非登录shell,用su username,即为非登录shell,环境变量仍为当前用户的环境变量。
根据是否为登录shell,读取环境变量配置文件是不同的。
登录shell读取环境变量顺序:
/etc/profile —> /etc/profile.d/*.sh—> ~/.bash_profile—> ~/.bashrc—> /etc/bashrc
非登录shell读取环境变量顺序:
~/.bashrc —> /etc/bashrc—> /etc/profile.d/*.sh
环境变量更改后,在用户下次登陆时生效,如果想立刻生效,则可执行下面的语句:source .bash_profile或者 . .bash_profile
ls -lrt--block-size=MB
ls 命令显示文件大小:
可以通过 block-size 参数,来显示文件的KB/MB/GB大小值
因为它们都是取近似值,所以最好是三者都用,这样获得的信息更准确。
[root@fullcent datastore]#ls -l--block-size=KB
total 3148813kB
[root@fullcent datastore]#ls -l--block-size=MB
total 3149MB
[root@fullcent datastore]#ls -l--block-size=GB
total 4GB
也可以加入h 参数,来显示大小:
[root@fullcent datastore]#ls -l
total 3075012
[root@fullcent datastore]# ls -lh
total 3.0G
查看当前目录下文件的个数
ls -l | grep"^-" | wc -l
查看当前目录下文件的个数,包括子目录里的。
ls -lR| grep"^-" | wc -l
查看某目录下文件夹(目录)的个数,包括子目录里的。
ls -lR| grep"^d" | wc –l
du -sk/-sm 文件详细路径 例如:du -sm ./
df -h
df -k
df -m
du -sk ./* | sort-n
找出目录的空间大小,按大小排序
一般在管理多文件是需要使用一些特殊排序方式
默认排序:du-sm|sort -n
按照列排序:du-sm|sort +n(列数) -n(倒序用-r)
grep(General Regular Expression Parser,通用规则表达式分析程序)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
它的使用语法为:
grep [选项] pattern [文件名]
. 匹配任意一个字符
* 匹配0 个或多个*前的字符
^ 匹配行开头
$ 匹配行结尾
[] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围,
例如[a-z]表示字母a 至z 中的任意一个
\ 转意字符
命令中的选项为:
-b 显示块号
-c 仅显示各指定文件中包含模式的总行数
-i 模式中字母不区分大小写
-h 不将包含模式的文件名显示在该行上
-l 仅显示包含模式的文件名
-n 显示模式所在行的行号
-s 指定文件若不存在或不可读,不提示错误信息
-v 显示所有不包含模式的行
其中,pattern为所要匹配的字符串。如在/etc/passwd文件下查找包含“carey”字符的行:
$ grep carey/etc/passwd
要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。
$ grep 'test' d*
显示所有以d开头的文件中包含test的行。
$ ls -l | grep'^public'
通过管道过滤ls -l输出的内容,只显示以public开头的行。
后面的^字符强制grep命令只在每行的开头找public。整个搜索模式(pattern)用单引号括起来,使shell不理会它们。shell只将单引号去掉,将搜索模式送给grep命令。
$ grep -i 'helloworld' menu.h main.c
显示在menu.h和main.c文件中匹配“hello world”的行,忽略大小写。
例如:
grep'sample' -R *
grep -v "^#" ./redis.conf
grep -v "^#" ./redis.conf | grep-v "^$"
grep是文本过滤,-v选项是显示不包含匹配文本的行,^#表示以#开头的行.
grep -v ^# 表示不显示以#开头的行.
grep -v ^$ 表示不显示空行.
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员(Multicast Memberships) 等等从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
常见参数
lsof -i :port 查看指定端口运行的程序,同时还有当前连接
LISTENING:正在监听,只有tcp端口才可以这样(如果是udp的话,那么肯定是木马)
ESTABLISHED:正在共享,表示两者连接着(如果135端口这样的话,注意杀毒)
CLOSE_WAIT:有过连接,现在已经结束了
netstat -ntl
lsof -i :port 查看指定端口运行的程序,同时还有当前连接
LISTENING:正在监听,只有tcp端口才可以这样(如果是udp的话,那么肯定是木马)
ESTABLISHED:正在共享,表示两者连接着(如果135端口这样的话,注意杀毒)
CLOSE_WAIT:有过连接,现在已经结束了
netstat -ntl
netstat -nul
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
实用命令实例
1. 列出所有端口 (包括监听和未监听的)
列出所有端口 netstat -a
列出所有 tcp 端口 netstat-at
列出所有 udp 端口 netstat-au
2. 列出所有处于监听状态的 Sockets
只显示监听端口 netstat -l
只列出所有监听 tcp 端口 netstat -lt
只列出所有监听 udp 端口 netstat -lu
只列出所有监听 UNIX 端口 netstat -lx
3. 显示每个协议的统计信息
显示所有端口的统计信息 netstat -s
显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su
4. 在 netstat 输出中显示 PID 和进程名称 netstat-p
netstat -pt
5. 在 netstat 输出中不显示主机,端口和用户名 (host, port or user)
netstat -an
6. 持续输出 netstat 信息
netstat -c
网络地址:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
# cat /proc/meminfo
# uname -a # 查看内核/操作系统/CPU