Linux常用命令
常用命令tailtail -f文件名# 根据文件描述符进行追踪(动态显示文件末尾内容),即使文件改名或被删除(甚至再次创建相同名称的文件),它仍然继续追踪之前的文件,而不会追踪新的文件。# 等价于:tail --follow=descriptor 文件名tail -F 文件名# 根据文件名进行追踪(动态显示文件末尾内容),并保持重试,当文件改名或被删除后,如果......
·
常用命令
tail
tail -f 文件名
# 根据文件描述符进行追踪(动态显示文件末尾内容),即使文件改名或被删除(甚至再次创建相同名称的文件),它仍然继续追踪之前的文件,而不会追踪新的文件。
# 等价于:tail --follow=descriptor 文件名
tail -F 文件名
# 根据文件名进行追踪(动态显示文件末尾内容),并保持重试,当文件改名或被删除后,如果再次创建相同名称的文件,则会追踪新创建的文件。
# 等价于:tail --follow=name --retry 文件名。
# 应用:查看日志时,使用 -F 可以防止日志切片后,追踪文件失败。
tail -f 文件名1 文件名2
tail -num 文件名 # 查看文件的最后num行
grep
grep 查找的字符串
grep 排除的字符串 -v # 查询不包含指定字符串的行
grep 查找的字符串 -i # 查找指定的字符串,忽略大小写
grep 查找的字符串 -A n # 查找指定的字符串,并且将后面的n行也查出来。
grep 查找的字符串 -B n # 查找指定的字符串,并且将前面的n行也查出来。
grep 查找的字符串 -C n # 查找指定的字符串,并且将前面的n行和后面的n行也查出来。
grep -c 查找的字符串 # 统计查询结果的行数
grep -E 条件表达式 # 查找指定条件的字符串。 eg:grep -E 'aa|bb' # 查找包含aa或包含bb的行。
grep -e 正则表达式 # 查找指定条件的字符串。 eg:grep -e 'aa*.*bb' # 查找包含"aaXXXXbb"的行。
# 从多个文件中查找
grep 查找的字符串 info.1.log info.2.log
grep 查找的字符串 info.*.log
注意:若查找的字符串中包含"."时,需要使用反斜杠转义。eg:grep "1\.1\.1"
cp
cp 原文件 目标文件
# -r 复制目录
cp -r /aaa /bbb # 将/aaa目录copy到/bbb目录下,即copy完成后:/bbb/aaa/xxx
cp -r /aaa/ /bbb # 将/aaa目录下的内容copy到/bbb目录下,即copy完成后:/bbb/xxx
cp -rp /aaa/ /bbb # 将/aaa目录下的内容copy到/bbb目录下并保留原文件的属性,即copy完成后:/bbb/xxx
# -p 保留文件属性
# -f 强制复制,若目标文件与原文件重名,则覆盖。(若不使用-f,当文件重名时会导致复制失败)
scp 原文件 目标文件
# 从远程主机下载文件:scp -p -P 远程主机的端口 远程主机上的文件 本地目录
# 上传文件夹到远程主机:scp -r 本地目录 远程主机的目录
# 上传文件到远程主机: scp -p 本地文件 远程主机的目录
&
command &
# 将任务放到后台 ,即使退出终端依然继续运行,但标准输出和标准错误信息会丢失
nohup command &
# nohup(no hang up):将任务放到后台,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使退出终端依然继续运行。
举例:nohup sh cmd.sh >> log.txt 2>&1 &
重定向
标准输入、标准输出、标准错误:每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1,2
> 标准输出重定向,等价于1>
说明:
> 文件名 将 标准输出 覆盖添加到文件中。
>> 文件名 将 标准输出 追加到文件的末尾。
&> 文件名 将 标准输出 和 标准错误输出 都重定向到文件中。说明:1)&> 文件名 和 >& 文件名 等价;2)不存在 &>> 文件名 和 >>& 文件名;
2>&1 将 标准错误 重定向到标准输出。
常见:
Command > filename 2>&1 把标准输出和标准错误一起(以覆盖的方式)重定向到一个文件中 ,等价于 Command &> filename
Command >> filename 2>&1 把标准输出和标准错误一起(以追加的方式)重定向到一个文件中,注意:Command &>> filename
解析:
Command > filename 2>&1 可以看成是两步执行:
第一步:Command > filename 将命令的标准输出重定向到filename中
第二步:2>&1 将命令的标准错误重定向到标准输出中,因为第一步中已经将标准输出重定向到filename中了,故标准错误最终也被重定向到filename中了。
df命令:
df -h # 查看文件系统磁盘空间的使用情况。 若磁盘空间不足,则执行脚本时会报No space left on device错。
df -i # 查看文件系统inode的使用情况。 若inode使用完,即使磁盘还有空间,执行脚本时同样会报No space left on device错。
fdisk -l # 查看磁盘列表,需要root权限。
badblocks -v 磁盘 # 检查磁盘是否有损坏的区块,需要root权限。eg:badblocks -v /dev/sda2
du命令:
du -sh 文件或目录 # 查看文件大小
# s 统计总占用量,而不列出子目录和子文件的大小。
举例:
du -sh 目录 # 查看整个目录的大小
du -sh 目录/* # 查看指定目录下各文件或目录的大小
stat命令
概念:查询文件的inode(inode即文件的元数据)。
参数:
-c FORMAT 或 --format=FORMAT
# 指定输出的内容,FORMAT取值可通过man stat查询,eg:
%n 输出文件名
%Y 以秒的形式来输出最后的修改时间
举例:
ls path -t | head -1 | xargs stat -c %n # 找到path目录下最后修改的文件
ls path -tr | head -1 | xargs stat -c %y # 找到path目录下最古老的文件的最后修改时间
readlink
readlink -f 文件名
# 查看符号链接所指向的位置,如果文件不是连接,则显示文件的绝对路径。
sort命令:
概念:对文件中的文本行进行排序。
格式:
sort [参数] filename
参数:
-u 去除重复的行
-n 按照数值来排序,即10比2大。说明:只要第一列为数字,即使其它列为字符串时,仍然可以用-n来排序。
-r 降序排序
uniq命令:
概念:用于统计或忽略文件中的重复行。
注意:当重复的行不相邻时,uniq命令是不起作用的,故我们一般先sort,然后再uniq。
格式:
uniq [参数] filename
参数:
-c或--count: 在每行的前面将该行重复出现的次数显示出来
-d或--repeated:仅显示重复出现的行
-u或--unique: 仅显示出现一次的行
举例:
uniq filename
# 查看文件中所有的文本行,如果存在多个相同的文本行,则只会显示其中的一行。
uniq filename -c
# 查看文件中所有的文本行,如果存在多个相同的文本行,则只会显示其中的一行,并且在每行的前面显示该文本行在文件中出现的次数。
seq命令:
概念:用于产生从某个数到另外一个数之间的所有整数。
格式:
seq [参数] 第一个数 第二个数
参数:
-f或--format=格式 使用printf样式的浮点格式(默认使用%g) eg:seq -f "%3g" 1 10
# 说明:"%3g"中3表示数字的位数,"%03g"中03表示数字的位数,若位数不够则补0。
-s或--separator=字符串 使用指定字符串分隔数字(默认使用换行符\n) eg:seq -s " | " 1 10
-w或--equal-width 在列前添加0,使得宽度相同,不能和-f一起使用 eg:seq -w 1 10
mpstat命令:
概念:mpstat是Multiprocessor Statistics的缩写,多处理器统计信息监控命令。
格式:
mpstat [-P {cpu的编号|ALL}] [internal [count]]
参数:
-P 指定监控的cpu,取值为:cpu的编号 或 ALL
internal 表示查询的间隔时间,单位为秒
count 表示查询的次数,如果interval和count都省略,则默认为只查询一次。
举例:
mpstat -P ALL 5 2
# 每隔5秒查询一次所有cpu的统计信息,总共查两次。
结果:
Linux 2.6.32-431.el6.x86_64 (hostname) 01/01/2017 _x86_64_ (48 CPU)
05:41:51 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
05:41:56 PM all 0.46 0.00 0.20 0.01 0.00 0.05 0.00 0.00 99.29
05:41:56 PM 0 1.41 0.00 0.40 0.00 0.00 0.20 0.00 0.00 97.98
05:41:56 PM 1 0.80 0.00 0.60 0.20 0.00 0.00 0.00 0.00 98.39
05:41:56 PM 2 2.43 0.00 1.21 0.00 0.00 0.61 0.00 0.00 95.75
05:41:56 PM 3 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 99.60
05:41:56 PM 4 1.80 0.00 1.00 0.00 0.00 0.60 0.00 0.00 96.61
05:41:56 PM 5 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 99.60
...
nslookup
说明:nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题。
格式:nslookup 域名或ip
ifconfig
说明:查看或配置网卡。
lo 回环地址(loopback),表示当前计算机本身
Xxx0 网卡名,常见的有eth0、xgbe0等,如果有多个网卡,则存在eth1、eth2等
nload
说明:查看网卡现在的流量状况。
格式:nload 网卡名
举例:
nload eth1 # 查看eth1的流量状况
nload -m # 查看所有网卡的流量状况
补充:
ethtool
说明:查询及设置网卡。
举例:
# 查看xgbe0网卡的速率。
ethtool xgbe0
Settings for xgbe0:
Speed: 10000Mb/s
unzip
说明:解压zip包
举例:
unzip log1.zip
unzip '*.zip' # 注意:'*.zip'单引号必须加!
tar
说明:打包、解包
ls | grep info-log | grep tar.gz | xargs -i tar -zxvf {} # 批量解压tar.gz压缩包
jar
查看jar包中的内容: jar -tf test.jar
查看jar包中是否包含某个类: jar -tf test.jar | grep 类名
解压jar包: jar -xvf test.jar
su命令:
su - user 完整的切换到新的用户环境。注:需要输入user的密码。
su user 切换到其他用户,但不切换环境变量
sudo命令:
sudo -iu user 切换到新的用户环境。注:需要输入当前登录用户的密码(而不是user的密码)。
ulimit命令:
概念:控制进程(shell程序)所占用的资源
ulimit
-a 查看资源限制的设定
-n <文件数目> 指定同一时间最多可开启的文件数
说明:linux下进程tcp链接的最大并发量受限于该值
-m <内存大小> 指定可使用内存的上限,单位为KB
-t <CPU时间> 指定CPU使用时间的上限,单位为秒
..
举例:
# 查看每个进程可以打开的文件数量的最大值
ulimit -n
# 将每个进程可以打开的文件数量设为65535
ulimit -n 65535
lsof命令:
# 查看某个端口port的占用情况,可以通过该命令来判断指定端口的服务是否已启动。
lsof -i:port
# 查看某个进程打开文件的数量
lsof -p PID
# 查看打开指定文件的所有进程
lsof fileName
mysql命令:
# 打开mysql客户端
mysql -h127.0.0.1 -P3306 -uroot -proot
# 执行sql语句
mysql -h127.0.0.1 -P3306 -uroot -proot dbName -e 'select * from xx where name="xxx"; '
补充:命令行中,在mysql的sql语句后加上 \G,表示将每个字段打印到单独的行。
ssh命令:
1)远程登录:
# 登录指定的机器
ssh user@host
# 在指定的机器上执行指定的命令,并将结果返回。
ssh user@host '命令'
参数:
-o key=value,常见取值:
ConnectTimeout=3 连接超时时间为3秒
ConnectionAttempts=5 连接失败后重试5次
PasswordAuthentication=no 不使用密码认证,没有互信直接退出
StrictHostKeyChecking=ask 如果连接和key不匹配,给出提示,并拒绝登录,默认选项。
StrictHostKeyChecking=no 自动信任主机并添加到known_hosts文件中,最不安全。
StrictHostKeyChecking=yes 如果连接与key不匹配,就拒绝连接,不会提示详细信息,最安全。
2)ssh端口转发:
概念:将打到A主机的请求,通过B主机转发到C主机的过程称为ssh端口转发,其中B主机承担着中转站的角色。
本地端口转发到远端
ssh -f -N -L local_port:remote_host:remote_port username@tunnel_host
# 把打到本地端口local_port的请求由tunnel_host转发到remote_host的remote_port上。
远程端口转发到本地
ssh -f -N -R remote_port:local_host:local_port user@tunnel_host
# 把打到远端端口remote_port的请求由tunnel_host转发到本地local_host的local_port端口上。
参数:
-f 后台认证用户/密码,通常和-N连用,不用登录到远程主机
-N 不执行脚本或命令,通常与-f连用
-L 本地端口转发
-R 远程端口转发
更多推荐
已为社区贡献1条内容
所有评论(0)