linux 一些实用命令常用

sanlanlan 2018-10-26 标签: linux 浏览:1803 评论:1

1.linux  加命令

vi /etc/profile 

add:alias ll='ls -l'

source /etc/profile


2.复制目录

 将目录dir1复制成目录dir2
cp -R dir1 dir2

mv source target


3.强制启动php

php-fpm -R-D


4.scp相关
 scp -Pport root@127.0.0.1:/data/1.txt .  //这个文件可以copy 到你当前目录下

 scp -r  127.0.0.1:/data/ . //目录


 sudo vim /etc/ssh/sshd_config
 sudo vim /etc/ssh/ssh_config  //这个:User:root;Port:port

(rsync 可以保持原样的文件迁移,如目录用户保持不变。常用来做文件迁移)


5.linux下 直接运行mysql,写入文件

mysql -h localhost -uroot -p -e "set names 'utf8'; select id from db.table" >a.log

mysql -h localhost -uroot -p -e "set names 'utf8'; select id from db.table" >b.log

cat a.log b.log | sort | uniq -u >diff.log


6.修改权限

chown -R git:git sample.git


7.查看网络端口情况

 netstat -an | grep LISTEN     // netstat -an | grep 80

 netstat -anp | grep 80


8.grep 统计次数

// 查看 这个字符串 hello 在文件出现的次数

cat xxx.log | grep -i hello |wc -l 


9.cat /etc/shells

查看支持的shell


chsh -s /bin/zsh    //切换shell

echo $SHELL    查看当前用的shell


10. 查看

head -n 10 demo.txt //查看前10行

tail    -n 10 demo.txt //查看后10行


11.查看端口号所使用的进程号

lsof –i:端口号



lsof -i:80 #检查程序被那个进程占用

COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    126   root   47u  IPv4    10374      0t0  TCP *:http (LISTEN)
nginx    128    www   47u  IPv4    10374      0t0  TCP *:http (LISTEN)
php     2194   root    6u  IPv4 16419057      0t0  TCP a.com:64500->b.com:http (CLOSE_WAIT)
php     2313   root    6u  IPv4  7478183      0t0  TCP a:23892->c:http (CLOSE_WAIT)


lsof -p pid #检视程序开启的执行代码
lsof  -i tcp #查看所有tcp网络连接
lsof  -i udp #查看所有udp网络连接信息
lsof -i :8080 #查看使用8080端口信息

lsof -u www 查找用户www的进程打开的文件


12. 查看那系统有几个 CPU
 cat /proc/cpuinfo | grep 'model name' | wc -l


13. 查看网络信息

# head -n 3 表示只显示前面 3 行
# -l 表示只显示监听套接字
# -n 表示显示数字地址和端口 (而不是名字)
# -p 表示显示进程信息
$ netstat -nlp | head -n 3
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:10000            0.0.0.0:*               LISTEN      1234/./redis-serve


# -l 表示只显示监听套接字
# -t 表示只显示 TCP 套接字
# -n 表示显示数字地址和端口 (而不是名字)
# -p 表示显示进程信息
$ ss -ltnp | head -n 3
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      128          *:10000                     *:*                   users:(("redis-server",pid=1234,fd=5))
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=1235,fd=6),("nginx",pid=2344,fd=6),("nginx",pid=23443,fd=6))


netstat -lntp 查看开启了哪些端口


netstat -ntlp | grep 80  //查看端口进程

netstat -ant | grep $ip:80 | wc -l  //查看连接数


14. su(Switch user)

sudo

su -
su - root
su - root -c "ls -l /root"
su - oracle -c "ulimit -aHS"
su -s /bin/sh -c "/usr/local/nginx/sbin/nginx"

-c, –command=COMMAND
使用 -c 传递单个命令到 shell 中,执行命令后,就恢复原来的用户身份,退出所切换到的用户环境;
-s, –shell=SHELL
指定执行命令的shell;    


15 find

find / -size +1024M  //大于1G 文件

find / -name a.txt


find /home -mtime +3 //3 天前被修改的文件 

16 查看某个进程占用,并kill

    ps aux | grep node | awk '{print $2}' | xargs kill


17 查看文件,目录关键字出现次数

    cat xxx.log | grep "hello" | wc -l  //文件中出现次数
    ls -l | xargs grep -ri "hello" | wc -l  //当前目录下,出现次数
    find ./ -name "*info.log" | xargs grep -ri "hello" | wc -l  //当前目录下,以info.log 结尾文件出现次数。r 是递归,i 是不区分大小写


111.


1.列出nginx日志访问最多的10个IP

(1)awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10

sort :排序
uniq -c:合并重复行,并记录重复次数
sort -nr :按照数字进行降序排序

14416 123.123.1.117
7302 123.123.1.178
4303 123.123.1.51
2846 123.236.77.51
2597 123.123.0.100
2575 123.123.1.48
2225 172.16.0.145
1990 123.123.1.55
1955 123.123.1.137
1847 123.123.0.84

(2)awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log


2.检视服务器IP连线数

netstat -tun | awk '{print $5}' | cut -d: -f1 |sort | uniq -c | sort -n
-tun:-tu是显示tcp和udp连线,n是以IP地址显示

cut -d:-f1:cut是一个选择性显示一行的内容命令,-d指定:为分隔符,-f1显示分隔符后的第一个栏位。
uniq -c:报告或删除文中的重复行,-c在输出行前面加上出现的次数
sort -n:根据不同型别进行排序,预设排序是升序,-r引数改为降序,-n是根据数值的大小进行排序

3.显示nginx日志一天访问量最多的前10位IP

awk '$4>="[16/Feb/2017:00:00:01" && $4<="[16/Feb/2017:23:59:59"' access.log |sort |uniq -c |sort-nr |head -n 10

awk '$4>="[16/Oct/2017:00:00:01" && $4<="[16/Oct/2017:23:59:59"{a[$1]++}END{for(i in a){print a[i],i|"sort -k1 -nr |head -n 10"}}' access.log


121.

free -k 查看内存

df -k 查看硬盘信息


du查看文件或目录占用磁盘空间的大小

du常用的一些参数:
  -h:以人类可读的方式显示
  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小


常用的一些命令:

du -sh    //只统计总数

du -ah   //统计个人目录大小

du -sh dir   //统计某个目录大小

du -sh ./*  // 查看目录

du -sh * | sort -h 排序


ps:

交换分区:就是把一块磁盘空间当做内存来用,它可以把进程暂时不用的数据存储到磁盘中(这个过程称为换出)
当进程访问这些内存时,再从磁盘读取这些数据到内存中(这个过程称为换入)

本文相关标签: linux 命令

评论:

haha
2016-09-13 21:55
不错

发表评论: