一些好用的linux命令(持续更新)
1. 比如vi一个log文件,查询某个异常,我们都知道用 \xxxx 然后安n进行查找,那么我要从最后后往前查找怎么办?
答案:非常简单,?xxxx 然后按n进行查找
2. 比如有些机器是禁止对其他机器进行scp的,那么如果把文件弄出去呢?
答案:可以采用反向 scp -P9999 192.168.1.2:/home/file .
3. 如何清理一面目录下的0字节的文件呢?
答案:find . -name "*.bcp" -size 0 -exec rm {} \;
ps: 清除过期的文件
du -h --max-depth=1 查询那些目录文件太多,比如三天前
find . -mtime +3 -type f |sudo -u admin xargs rm -f
4. 如果一个目录的文件数据超过一定,cp mv rm 可能会爆出Argument list too,如何解决?
答案:find source/ -name "*.txt" -exec mv {} target \; (第二步创建的文件名都是以.txt结尾的)或者使用 find source/ -name "*.txt" | xargs -i mv {} target/ 命令,如果是cp、rm 、ls操作将以上命令里中的mv改为相应的命令即可。其实我最喜欢用 ls | xargs -n 10 rm -fr。
ls hsf.log.2015-0* | sudo -u admin xargs rm -f;
5. 如何查询文件或者目录的大小?
答案:使用ls -lht命令显示当前目录下的所有文件,其中有一列就是显示这个文件的大小。如果要看一个文件夹的大小,可以用du -sh *。
du -h --time --max-depth=1 | sort -hr
6. 用最简单命令杀死一个进程?
答案:通常 ps -aux | grep <program> 或者netstat -ntlp |grep <port> 然后再查看该进程的ID,最后是 kill 进程ID。
其实有一个很简单的明明,叫做pkill,可以轻松秒杀,如pkill -9 <program> 就可以轻松秒杀。
还有传说中的一个拉风的命令:ps ax | grep <program>| grep -v grep | awk '{ print $1 }' | xargs kill -9
7. 如何查询一个进程的运行态占用的CPU和MEM?
答案:只适用于单个pid的,top -p `ps -ef | grep <program> | grep -v grep| awk {‘print $2’}`
8. 统计那些日志出现那个异常?
grep Can\'t *.log | awk -F : {'print $1'} | sort | uniq | wc -l
9. 如何生成0000 ~ 9999这种序列呢?
echo {0..9}{0..9}{0..9}{0..9} 或者 seq -w 0000 9999
10.如何分区超过2T的分区?
使用 parted 建立大小超过2T的分区
10.1 parted /dev/sdb 可以输入p打印磁盘信息,查看分区的情况,找到起始和结束位置。
10.2 mklabel gpt 设置分区类型为gpt
10.3 mkpart primary 0% 100% primary指分区类型为主分区,0是分区开始位置,100%是分区结束位置。相同的命令为:mkpart primary 0-1 或者是:mkpart primary 0 XXXXXX结束的空间
10.4 print 打印当前分区,查看分区设置是否正确
10.5 quit 完成后用quit命令退出。
10.6 mkfs.ext3 /dev/sdb1 格式化磁盘。如果支持EXT4可选择格式化为EXT4,格式化成ext3的时候又出现问题。Ext3默认的block size的大小为4k,最大只能支持8T的空间。格式化时指定block size的大小为8K这样最大可以支持16T的空间。相应命令:mkfs.ext3 -b 8192 /dev/sdb2
10.7 mount /dev/sdb1 /home/ 挂载到/home目录下
10.8 自动挂载分区 当在系统里创建了一个新的分区后,因为mount挂载在重启服务后会失效,所以需要将分区信息写到/etc/fstab文件中让其永久挂载,编辑/etc/fstab里加入
/dev/sdb1(磁盘分区) /home(mount目录) ext3(文件格式) defaults 0 0
保存退出,重启后/dev/sdb1 就会自动挂载到/mnt/abc目录下
11.如何查询Linux版本号?
/etc/issue 和 /etc/redhat-release都是系统安装时默认的发行版本信息
12.乱码文件夹或文件如何删除?
假设在 /下存在乱码目录 x
执行 ls /|nl -ba 查看输出中乱码目录x在第几行,假设在第29行
接着 执行ls /|sed -n '29'p|xargs rm -rf
13.shell脚本中的$*,$@和$#?
脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)
14.cd `dirname $0`干什么用途?
在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径的"."。
这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外),提高了脚本的可移植性。
在/home/admin/test/下新建test.sh内容如下:
cd `dirname $0`
echo `pwd`
15.shell函数中的local怎么理解?
local添加后,作用域的范围不一样。local仅仅的作用范围在函数体内
16. linux下ipcs和ipcrm命令详解?
第一次见是在用于apache与hummock直接通信的数据清理。
可以参考http://www.cppblog.com/doing5552/archive/2010/07/12/120126.html
17. Shift的用法?
http://www.cnblogs.com/image-eye/archive/2011/08/20/2147153.html
18. shell与空格
http://blog.csdn.net/qzwujiaying/article/details/6321068
19. shell读取文件
http://blog.163.com/iloveecho83@126/blog/static/17299752520111124452281/
20. find命令详解
http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html
21. tar里面包含一个tar,会出现如下提示: This does not look like a tar archive
gzip -d xxxx.tar.gz, tar -xf xxxx.tar
22. configure时,报了错误error: newly created file is older than distributed files!
date -s '20150915 150505'
hwclock -w (root 权限 将当前时间和日期写入BIOS,避免重启后失效)
22. sed 提取字符串中的字符
awk是规规矩矩的切,sed支持正则。
grep score scan-message.log | sed 's/\(.*\)mainPicUrl"\:"\(.*\)","\(.*\)/\2/g'
s表示替换,最后的2表示正则里面的group=2,表示用group=2 替换整个字符串
\是转义,\(.*\)表示group1 ,mainPicUrl"\:" 是匹配mainPicUrl":"www.baidu.com", "score":12....这种字符串中的前缀。
23. RPM安装命令
1 #rpm -i example.rpm 安装 example.rpm 包; 2 #rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息; 3 #rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
#rpm -e example 删除已安装的软件包
#rpm -q example 查询软件包
#rpm -Uvh example.rpm
只下载,不安装(安装插件)
yum -y install yum-downloadonly
yum -y install --downloadonly --downloaddir=/home/ example