首页 > 代码库 > Linux常用命令

Linux常用命令

du -sh * 显示某些文件的大小
df -h    磁盘空间是否还有剩余?-a 全部文件系统列表  -h 方便阅读方式显示 1K=1000,而不是1K=1024
 
拷贝源资源至目标目录下
scp -r root@192.168.62.10:/root/ /home/administrator/Desktop/new/
scp root@192.168.62.10:/root/1.txt /home/administrator/Desktop/new/
 

ulimit -n 查看文件句柄数
ulimit -n 2048 进行修改
locale 查看系统的默认编码

 
tar -zxvf file.tar.gz file
tar -zcvf file.tar.gz
zip -r filename.zip file1 filesdir     -r 选项递归目录
unzip filename.zip
 
gzip -c abc.tar > abc.tar.gz
gunzip abc.tar.gz
 
grep的基本形式    grep [option] [pattern] [files]
默认情况下,’grep’只搜索当前目录。这里有两种解决的办法:明确要求搜索子目录:grep -r或忽略子目录:grep -d skip
-i :忽略大小写 
-c :打印匹配的行数 
-l :只列出匹配的文件名 
-v :查找不包含匹配项的行 
-n:打印包含匹配项的行和行标 
-w:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
 

find的基本形式 find [path] -name [pattern]
find . -amin -10 #查找在系统中最后10分钟访问的文件
find . -atime -2 #查找在系统中最后48小时访问的文件
find . -empty #查找在系统中为空的文件或者文件夹
find . -group cat # 查找在系统中属于groupcat 的文件(试了,命令不对。)
find . -mmin -5 # 查找在系统中最后5 分钟里修改过的文件
find . -mtime -1 #查找在系统中最后24 小时里修改过的文件
find . -nouser #查找在系统中属于作废用户的文件(不明白是什么意思)
find . -amin 10 #查找在系统中最后10分钟访问的文件
find . -user root #查找在系统中属于root这个用户的文件
find /tmp -size +10000000c -and -mtime +2 #查找/tmp目录中大于10000000字节并且在48小时内修改的某个文件
find /tmp -user tom -or -user george #查找/tmp目录中属于tom或者george这两个用户的文件
find /tmp ! -usr fred #查找/tmp目录中不属于fred的文件

 
 
awk基本形式     awk ‘/pattern/{action}‘ {filenames}   pattern是可选的 
awk工作流程是这样的:读入有‘\n‘换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键"。
内置变量(含$0-n)
ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符
例子:
awk -F ‘:‘ ‘/^root/{print $1}‘ /etc/passwd   
awk -F ‘:‘ ‘{print $1"\t"$7}‘ /etc/passwd   
awk -F ‘:‘  ‘{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}‘ /etc/passwd
awk -F ‘:‘  ‘{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}‘ /etc/passwd
awk ‘BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}‘ /etc/passwd

 
在服务器上排除问题的命令
w,last    有谁在线,有哪些用户访问过
history    服务器上执行过的命令(export HISTTIMEFORMAT=‘%F %T ‘)(添加EXTENDED_HISTORY=ON至/etc/environment)
pstree -a,ps aux    查看现有进程的情况
netstat -ntlp,netstat -nulp,netstat -nxlp    找到所有正在运行的服务,各个监听端口。在netstat显示的服务列表中的PID 和 ps aux 进程列表中的是一样的。
free -m,uptime,top,htop    CPU 和内存的情况
lspci,dmidecode,ethtool    找到RAID 卡 (是否带BBU备用电池)、 CPU、空余的内存插槽。网卡是否设置? 是否正运行在半双工状态? 速度是10MBps? 有没有 TX/RX 报错
iostat -kx 2    检查磁盘使用量 
vmstat 2 10    是否开启了swap交换模式 
mpstat 2 10    CPU被谁占用:系统进程? 用户进程? 虚拟机?
dstat --top-io --top-bio    谁在进,行 IO是不是MySQL吃掉了所有的系统资源? 还是你的PHP进程?
mount    挂载了多少文件系统
cat /etc/fstab    有没有某个服务专用的文件系统? (比如MySQL?)
vgs    文件系统的挂载选项是什么: noatime? default? 
pvs    有没有文件系统被重新挂载为只读模式了?
lsof +D / /* beware not to kill your box */    如果磁盘空间有问题,你是否还有空间来扩展一个分区?
dmesg,less /var/log/messages,less /var/log/secure,less /var/log/auth    系统日志和内核消息
ls /etc/cron* + cat,for user in $(cat /etc/passwd | cut -f1 -d:); do crontab -l -u $user; done    是否有某个定时任务运行过于频繁,是否有些用户提交了隐藏的定时任务
 

top TOP 命令拿到最耗 CPU 的那个进程
ps p 10495 -L -o pcpu,pid,tid,time,tname,cmd > ~/10495ps.txt 找到这个进程中占用 CPU 较高的那些线程





 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Linux常用命令