首页 > 代码库 > Linux命令进阶
Linux命令进阶
配置文件
- .bashrc/.zshrc
保存个人的一些个性化设置,如命令别名、路径等。一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了
系统管理员对用户和用户组管理文件
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
文件目录操作
cat
- 三大主要功能
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file - -b, –number-nonblank 对非空输出行编号
-n, –number 对输出的所有行编号,由1开始对所有输出的行数编号
cat -n log2012.log > log2013.log
- tac log.txt 反向列示
head/tail
- head -n 5 log2014.log 显示文件的前n行
- head -c 20 log2014.log 显示文件前n个字节
- head -c -32 log2014.log 文件的除了最后n个字节以外的内容
- head -n -6 log2014.log 输出文件除了最后n行的全部内容
more / less
- more +3 log2012.log 显示文件中从第3行起的内容
- more +/day3 log2012.log 从文件中查找第一个出现”day3”字符串的行,并从该处前两行开始显示输出
- more -5 log2012.log 设定每屏显示行数
- ls -l | more -5
mv
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
nl
nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能
rm
自定义回收站
打开.bashrc或者.zshrc文件,在后边添加如下命令:myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } alias myrm=‘myrm‘
source .zshrc进行生效,就可以使用myrm命令了
touch
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
touch -r log.log log2012.log
-t 使用指定的日期时间,而非现在的时间,time的格式[[CC]YY]MMDDhhmm[.SS]
touch -t 201211142234.50 log.log
文件查找
find
- find . -size +1000c -print 查找当前目录大于1K的文件
locate
ocate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行
PS: 有时候电脑上可能没有locate命令,这个时候需要先安装mlocate,然后使用updatedb进行更新就可以了
whereis
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置
* -b 定位可执行文件,二进制文件
* -m 定位帮助文件
* -s 定位源代码文件
which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
文件打包上传与下载
- 区分打包和压缩
打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
用SecureCRT来上传和下载文件
tar
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
- -x 从压缩的文件中提取文件
- -z 支持gzip解压文件
- -c 建立新的压缩文件
- -v 显示操作过程
- -f 指定压缩文件
-d 记录文件的差别
tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName
.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 jcvf FileName.tar.bz2 DirName
.bz 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知
.tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知
.Z 解压:uncompress FileName.Z 压缩:compress FileName
.tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName
.zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName
.rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName
文件权限设置
chgrp
使用chgrp指令去变更文件与目录所属群组
- 群组和群组识别码可以去/etc/group文件中查看
- -v 运行时显示详细的处理信息
–dereference 作用于符号链接的指向,而不是符号链接本身
改变文件的群组属性 chgrp -v bin log2012.log 根据指定文件改变文件的群组属性 chgrp --reference=log2012.log log2013.log 改变指定目录以及其子目录下的所有文件的群组属性 chgrp -R bin test6 通过群组识别码改变文件群组属性 chgrp -R 100 test6
chown命令
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
- -R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
改变拥有者和群组 chown mail:mail log2012.log 改变文件拥有者和群组 chown root: log2012.log 改变文件群组 chown :mail log2012.log 改变指定目录以及其子目录下的所有文件的拥有者和群组 chown -R -v root:mail test6
磁盘存储相关
df
- 必要参数
- -a 全部文件系统列表
- -h 方便阅读方式显示
- -H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
- -i 显示inode信息
- -k 区块为1024字节
- -l 只显示本地文件系统
- -m 区块为1048576字节
- –no-sync 忽略 sync 命令
- -P 输出格式为POSIX
- –sync 在取得磁盘信息前,先执行sync命令
- -T 文件系统类型
- 选择参数
- –block-size=<区块大小> 指定区块大小
- -t<文件系统类型> 只显示选定文件系统的磁盘信息
- -x<文件系统类型> 不显示选定文件系统的磁盘信息
- –help 显示帮助信息
- –version 显示版本信息
du
暂时使用的较少,不详述
性能监控与优化
top
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
- 常用参数
- -b 批处理
- -c 显示完整的治命令
- -I 忽略失效过程
- -s 保密模式
- -S 累积模式
- -i<时间> 设置间隔时间
- -u<用户名> 指定用户名
- -p<进程号> 指定进程
- -n<次数> 循环显示的次数
- 举例
- 第一行:当前系统时间;up xxx 运行了多久;当前1个用户登录;load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
- 第二行:总的进程数量,zombie是僵死的
- PID行:进程ID;进程所有者;进程优先级(PR);nice值,负值表示高优先级,正值表示低优先级;VIRT,进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES;RES,进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA;
free
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
- 命令参数
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -g 以GB为单位显示内存使用情况。
- -o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
- 内存额定值文件:cat /proc/meminfo
实例
free free -g free -m free -s 1 //每秒执行一次
vmstat/iostat命令/lsof命令
还没接触到,先不做解释
http://www.cnblogs.com/peida/archive/2012/12/25/2833108.html
网络命令
ifconfig
用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
- 命令参数
- up 启动指定网络设备/网卡。
- down 关闭指定网络设备/网卡。
- arp 设置指定网卡是否支持ARP协议
实例
启动和关闭网卡 ifconfig eth0 up ifconfig eth0 down 为网卡配置ipv6地址 ifconfig eth0 add 33ffe:3240:800:1005::2/64 用ifconfig修改MAC地址 ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 配置IP地址 ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255 启用和关闭ARP协议 ifconfig eth0 arp ifconfig eth0 -arp 设置最大传输单元 ifconfig eth0 mtu 1500
rcp(remote file copy)
rcp命令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。
- 命令参数
- -r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
- -p 试图保留源文件的修改时间和模式,忽略umask。
- -k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost⑶确定的远程主机区域内的远程主机的Kerberos许可。
- -x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线(\)、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。
- directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径
实例
rcp local_file remote_hostname:remote_fileEnter rcp remote_hostname:remote_file local_fileEnter
scp(secure copy)
scp传输是加密的
- 命令格式: scp [参数] [原路径] [目标路径]
- 命令参数
- -1 强制scp命令使用协议ssh1
- -2 强制scp命令使用协议ssh2
- -4 强制scp命令只使用IPv4寻址
- -6 强制scp命令只使用IPv6寻址
- -B 使用批处理模式(传输过程中不询问传输口令或短语)
- -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p 保留原文件的修改时间,访问时间和访问权限。
- -q 不显示传输进度条。
- -r 递归复制整个目录。
- -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port 注意是大写的P, port是指定数据传输用到的端口号
- -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
实例
从本地服务器复制到远程服务器
scp local_file remote_username@remote_ip:remote_folder/file scp local_file remote_ip:remote_folder/file
从远程服务器复制到本地服务器
scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
route/traceroute/netstat/ss
待续。。。
Linux命令进阶