linux常用命令总结

以下为个人常用的linux命令总结:

一、处理目录的常用命令:

1.cd: 变换目录

cd .                     当前目录
cd ..                    上一层目录
cd ../..                 上两层目录
cd -                     前一个工作目录
cd ~                     家目录,自己的主文件夹          cd = cd~
cd /                     根目录
cd ~account              account这个使用者的主文件夹

2.pwd : 显示当前目录位置
3.mkdir : 创建新的目录

mkdir -p 111/222/333      递归

4.ls : 列出目录下的文件信息

ls -a            列出所有文件,包括以 . 开头的隐含文件
ls -l            列出文件 细信息 ( 权限、所有者、文件大小等 )
ls -i            列出文件的i结点号 ,或stat文件名太阳可以列出i结点号
ls -d            列出目录本身信息
ls -h            以容易理解的格式列出文件大小 (例如 1K 234M 2G)
ls -t            以文件修改时间排序
ls -r            逆序 
二、 处理文件的相关命令:

5.vim: 新建文件 / 编辑文件内容
6.touch : 新建文件 / 更新文件的最新修改时间 (mtime内容数据变更 ctime 状态改变、权限与属性 atime内容被取用)
7.cat、more、head、tail、nl : 查阅文件内容

cat -n               带行号输出
nl                   带行号输出(不计空行)
tac                  从最后一行显示文件内容
more                 一页 一页的显示文件内 容     (  q结束  空格翻下一页  回车翻下一行  )
less                 与 more 类似, 但是比 more 更好的是, 他可以往前翻页 !   
head                 默认看头10行   
head - 20            查看前20行
tail                 默认看末10行
tailf                即时输出文件变化后追加的数据
od                   以二进制 的方式读取文件内 容!

8.sed

sed -i -r '2,4d' test.txt                      删除第 2-4 行
sed -i -r '/^for/d' test.txt                   删除以 for 开头的行
sed -i -r '/result/d' test.txt                 删除含有字符串 result 的行
  
sed -i -r '1c hello world' test.txt            将第一行文字替换为 helloworld
sed -i -r '/return/c hello world' test.txt     将含有字符串 result 的行内容替换为 helloworld
  
sed '1i #########' test.txt                    在第一行前新增一行内容为 ########
 
sed -i -r 's/aa/AA' test.txt                   将每行的第一个aa替换为 AA
sed -i -r 's/aa/AA/g' test.txt                 将全文所有的aa替换为 AA
sed -i -r '1s/b/B/g' test.txt                  将第一行的b替换为B
sed -i -r '3,$s/aa/AA/g' test.txt              将第3行到最后一行的aa替换为AA
sed -i -r '/^[0-9]/s/bb/BB/g' test.txt         将以数字开头的行中 bb替换为BB
sed -i -r '/bin/s/ba/BA/g' test.txt            将含有字符串 bin 的行中 ba 替换为 BA

linux常用命令总结_第1张图片

9.cut: 从文件的每一行剪切字节、字符和字段并写至标准输出。

cut -c 3               输出第3个字符
cut -c 3-5             输出第3-5 个字符
cut -c 3-              输出第个
cut -d 分隔符           自定义分隔符,默认为制表符。
cut -d :-f 3          -f与-d一起使用,指定显示哪个区域。
cut -b                 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
cut -n                 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。

10.echo: 输出文字

1. echo aaa > a.txt        #替换字符
2. echo bbb>>b.txt         #追加字符串
3. tmp.txt:               #清空tmp.txt
4. echo -n                 #不换行
5. echo -e                 #支持反斜线控制的字符转换

linux常用命令总结_第2张图片
11.ln:建立链接文件

 ln 源文件 目标文件         #建立硬链接文件 
                         (源文件和硬链接文件的 inode 号是一样的)
                         (不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件据inode号都可以被访问)
 ln -s 源文件 目标文件      #建立软连接文件 
                          (源文件必须写成绝对路径,否则软链接文件会报错,硬链接没有这样的要求)
                          (删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在)
                          (软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及 inode 号)
 ln -f 源文件 目标文件      #强制。如果目标文件已经存在,则删除目标文件后再建立链接文件
  1. find :查找文件
      
1. 按文件修改时间查找
                 find / -mtime +n :        #列出在n天之前( 不含n天本身 )被更动过内容的文件文件名 
                 find / -mtime -n :        #列出在n天之内 ( 含n天本身 )被更动过内容的文件文件名 
                 find / -newer file :      #列出时间比文件file新的文件名称
                 find / -mtime 0            #列出过去系统上面24小时内有改动过的文件   
                 find / -mtime 3            #列出三天前的 24 小时内有改动过的文件
2. 按文件权限查找
                find / -user 用户名          #按所属用户名查找
                find / -uid 用户id           #按所属用户id查找
                find / -nouser              #找到不属于系统任何人的文件,主要用于査找垃圾文件
3. 与文件名称有关的
                find / -name  文件名          #按名称查找,与文件名完全一致
                find / -name“[A-Z*]”         #正则表达式搜索,以大写字母开头
                find / -not -name “ ”        #不以...命名     
                find / -iname 文件名          #不区分大小写
                find / -inum inode号         #按照 inode 号来搜索文件(区分硬链接文件的重要手段,因为硬链接文件的inode号是一致的)
	 		    find / -type l               #按类型查找 (目录 d,文件 f ,链接文件 l)
4. 与文件大小有关; [+,-][b,k,M,G]注意大小写不同
               find / -size +1k             #搜索当大于1k的文件
5. 逻辑运算符
               find / -size +1k -a -type l   # -a 与,可省略
               find / -size +1k -o -type l   # -o 或
               find / -not -name “ ”         # 取反
6. 支持额外进行的动作;注意{}与\;之间有空格,指令不支持别名
              find /usr/local/backs /usr/sbin -mtime +10 -name "host*" -exec  ls -l {} \;  
                             
三、处理文件和目录相关命令:

1.cp | scp: 复制文件

cp -r                                        复制目录(递归复制)    
cp -a                                        连同文件的属 性( 权限、 用 户 、 时间 ) 一起复制,不同用户之间
scp [-r目录]  源 目的                          不同机器之间复制
	1. scp 本地位置 ip:文件位置的绝对路径----将本地文件拷贝到另一台机器
	2. scp ip:文件位置的绝对路径 本地位置----将cat另一台机器的文件拷至本地

#将多个数据一次复制到同一个目录,最后面一定是目录
#备份文件
#更新文件夹内容
#创建快捷方式

2.rm : 移除文件

rm -r                #递归,移除目录          
rm -rf               #强制移除,不提示

3.mv : 移动 / 重命名 (文件或目录)

                     #不需-r实现递归
mv -f                #强制,不提示
rename               #批量更改文件名      例:rename ad aa ad*    把以ad开头的文件中,ad全部更名为aa

4.stat 文件名或目录名:显示文件或文件系统的详细信息

stat                #显示文件的详细信息
stat -f             #査看文件所在的文件系统信息,而不是査看文件的信息

#文件详细信息包括 i节点号(ls -i),占用的block数,三种时间......
#三种时间的含义:
1. 用 cat 命令读取一下这个文件,改变文件的访问时间 (Access Time)。
2. 用 echo 命令向文件中写入点数据,那么文件的数据修改时间(Modify Time)就会发生改变。但是文件数据改变了,系统会认为文件
的状态也会改变,所以状态修改时间(Change Time)也会随之改变的状态也会改变,所以状态修改时间(Change Time)也会随之改变。
3. 如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(ChangeTime)。
4. 而如果用 touch 命令再次触摸这个文件,则这个文件的三个时间 都会改变。touch 命令的作用就是这样的,记住即可。

5.tar: 打包命令

tar -cvf aaa.tar aaa           #压缩文件         (c打包、v显示过程、f指定压缩文件名)
tar -xvf aaa.tar               #解压缩文件        (x解压缩)
tar -zcvf bbb.tar.gz bbb       #压缩目录         (.tar.gz)
tar -zxvf bbb.tar.gz           #解压目录
tar -jcvf bbb.tar.bz2 bbb      #压缩目录         (.tar.bz2)
tar -jxvf bbb.tar.gz           #解压目录
tar -tvf aaa.tar               #查看压缩包内的文件
tar -xvf aaa.tar -C /tmp       #压缩到指定目录下 

zip :打包命令

zip aaa.zip aaa                #压缩文件
zip -r bbb.zip bbb             #压缩目录
unzip aaa.zip                  #解压缩文件
zip aaa.zip aaa1 aaa2          #同时压缩多个文件
unzip -d 位置 压缩包名           #指定解压缩位置

gzip :打包命令

gzip 文件名                   #源目录丢失
gzip -c 文件名> 文件名.gz      #保留源目录
gzip -r 目录名                #只能压缩目录下的文件,不能打包压缩
gunzip 压缩包                #解压缩
四、与用户和文件权限相关的命令:

useradd 用户名 :添加用户
userdel -r 用户名 :删除用户及家目录
passwd 用户名 :修改某个用户的密码(root);passwd :修改当前用户密码

echo "123" | passwd -stdin lamp         #批量添加用户时,给所有的用户设定一个初始密码。

su - 用户名 :切换用户;su - 切换到root
usermod -G 组名 用户名 修改用户的附加组,其实就是把用户加入其他用户组
chage -d 0 用户名 :强制用户在第一次登陆时必须修改密码.便于批量管理。
id 用户名 :可以査询用户的UID、GID 和附加组的信息
groupadd 组名:添加组
groupdel 祖名:刪除用户组
gpasswd 组名:把用户添加进组或从组中删除

 gpasswd -a 用户名 组名                    #把用户加入组
 gpasswd -d 用户名 组名                    #把用户从组中删除

chown (-R) 用户名 文件名:修改文件的所有者
chgrp (-R) 组名 文件名:修改文件的所属组
chown (-R) 用户名:组名 文件名 :同时修改
chmod+x/r/w 文件 / chmod 755 文件 :修改文件权限

五、软件管理相关命令:yum rpm

yum provides */ 软件名: 查询软件相关可安装包
yum -y install 软件名: 不询问直接安装
yum update 软件名: 升级软件
rpm -ivh rpm包名:安装的时候显示安装进度

六、进程相关命令: ps top pstree kill

ps : 查看进程-静态

ps -l                                         # 查看与自己的bash相关程序进程
ps aux                                        # 查看系统所有进程
ps -le                                        #可以查看系统中所有的进程,而且还能看到进程的父进程的PID和进程优先级;

实例:
ps aux|grep 进程                               #查看某进程状态
ps -eo "%C : %p : %z : %a"|sort -k5 -nr       #按内存从大到小排列
ps -eo "%C : %p : %z : %a"|sort -nr           #按cpu利用率从大到小排列
ps -eo comm,lstart                            #查看进程启动时间
ps -eo comm,etime                             #查看进程运行时间
ps -eo pid,tty,user,comm,lstart,etime | grep ......           
### pid:进程ID 、tty:终端 、user:用户、comm:进程名 、lstart:开始时间 、etime:运行时间

top : 查看进程-动态(默认5秒更新一次,默认以cpu使用率排序)

top -d 2                                      #2秒更新一次
top -p 进程号                                  #单独查看某个进程
top -b -n 2 >/tmp/1.txt                       #执行两次后,结果保存到文件

M:  #按照内存的使用率排序
q:  #退出 top 命令;

pstree -Aup : 查看进程之间的相关性 (A以ASCII字符连接 up列出pid)
kill : 待定
htop : 待定

七、系统服务管理

service:centos6

1. service 服务名 start|stop|restart|status      #启动/停止/重启服务、查看服务状态        
2. service --status-all                         #查看所有独立服务的启动状态
3. chkconfig 服务名 on/off                       #设置/关闭开机自启
4. chkconfig --list                             #查看所有 RPM 包默认安装服务的自启动状态
5. chkconfig --level 2345 httpd on              #设置apache服务在进入2、3、4、5级别时自启动

systemctl:centos7

6. systemctl start|stop|restart|status 服务名           #启动/停止/重启服务、查看服务状态            
7. systemctl enable/disable 服务名                      #设置/关闭开机自启

/etc/init.d/*

/etc/init.d独立服务名 start| stop|status|restart|...      #启动/停止/重启服务、查看服务状态     
八、关机/重启命令

重启:
1. shutdown -r now
2. reboot
3. init 6

关机:
1. shutdown -h now
2. halt
3. poweroff
4. init 0


type 命令名:用于判断另外一个命令是否是内置命令(shell builtin 内置命令)

date:时间

date                                    #显示当前时间
date -s "2019-01-22 19:22:22"           #修改系统时间
date -d@1363779026                      #类1363779026形式的时间格式转化为人可识别的时间格式
date +%s                                #从1970年1月1日00:00:00 UTC到目前为止的秒数(时间戳)
tzselect                                #修正时区,选择5911,执行TZ='Asia/Shanghai'; export TZ
ntpdate 0.arch.pool.ntp.org             #修正时间
name=`date '+%Y_%m_%d'`                   #shell脚本定义变量表示今天
name=`date -d ‘yesterday’ ’+%Y_%m_%d'`    #shell脚本定义变量表示昨天
name=`date '+%Y_%m_%d_%H:%M:%S '`         #shell脚本定义变量表示今天,精确到秒

netstate :网络状态

netstat -tuln               #查看本机开启的端口
netstat -tulnp              #p 查看到是哪个程序占用了端口
cat /etc/services           #查看服务对应的端口号
netstat -an                 #查看所有连接

mail :邮件

mail                         #查看邮件
       交互命令 :
       1.d2                        #删除第二封邮件
       2.s 1 /tmp/test             #邮件另存为
       3.q                         #保存操作退出
       4.e                         #不保存操作退出 
mail  用户名                 #发送邮件(填写标题,内容,以.结束)
mail -s “标题” 用户名<文件    #将某个文件发送给某人,并添加新标题

write 用户名: 给某用户发信息,输入内容,ctrl+c结束,有时需要在末尾加上 pts/1或 pts/2 或/pts/3

sync :把缓存区(内存)中的数据强制向硬盘中保存,在关机或重启之前手工执行几次,避免数据丟失。

umask :默认权限

umask                     #用八制数值显示                 0022                        
umask -S                  #査看系统的 umask 权限,用字母表示          u=rwx, g=rx, o=rx           
umask 002                 #临时修改文件默认权限,如果想让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile

man 命令,命令 --help,info 命令 :三个常用帮助命令

ifconfig :査看 IP 地址、子网掩码和 MAC 地址
ifconfig eth0 192.168.44.3 netmask 255.255.255.0 #临时修改ip地址,具体: http://c.biancheng.net/view/797.html
ping ip地址 :向网络主机发送ICMP请求
ping -c 3 IP地址 #ping3次
setup :配置ip地址,重启网络服务network生效。具体:http://c.biancheng.net/view/795.html

alias lm=‘ls -al’:设置别名
unalias lm :取消别名
alias: 查看别名

  1. 查看cpu内核: https://blog.csdn.net/qq_40443457/article/details/92646048

        lscpu |grep CPU
        cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 
        cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l 
        cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l
    
  2. 查看磁盘使用情况

     df -h
    
  3. 查看文件大小

     du -sh *
    
  4. 查看内存大小

     free -m | grep "Mem" | awk '{print $2}'  
     free -g
    
  5. 查看硬件制造商

     dmidacond -s system-product-name
    
  6. 获取IP地址

     ifconfig eth0|grep“inet addr" | awk'{print $2}'|cut -c 6-    
     或:ifconfig |'grep -v '127.0.0.1' | grep 'inet addr:' | cut -d: -f2 |
     awk '{ print $1}'
    
  7. 显示网络接口信息https://blog.csdn.net/qq_40443457/article/details/92653636

         sar -n DEV
    
  8. 查看进程

         ps aux | grep 进程名
    
  9. 查看系统版本

     lsb_release -a
     cat /etc/redhat-release
    
  10. 查看linux系统内核

    uname -a
    
  11. ping ip地址 :一直ping

    ping -c 次数  指定次数
    
  12. 查看占用端口8080的进程

        netstat -tnlp |grep 8080
    
  13. 在Shell环境下,如何查看远程Linux系统运行了多少时间?

       ssh user@ip "uptime"
    
  14. 在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh

        crontab -e
        0 6-12/2 * 11 * /usr/bin/httpd.h
    
  15. 查看upu使用情况。每5秒刷新一次,最右侧有cpu占用率的数据

        vmstat 5    
    
  16. 按照进程处理器占用率排序

       top + shift P
    
  17. 按照进程内存占用率排序

        top + shift M
    
  18. 清除僵尸进程

        ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
    
  19. 屏幕上仅列 出 /etc/man_db.conf 的第 11 到 第 20 行, 且有行号存在

        cat -n /etc/man_db.conf | head -n 20 | tail -n 10  
    
  20. 删除7天前的日志文件(文件位置/home/log)

        find /home/log/ -mtime +7 -not -name "*.log" -exec rm-rf {} \;
    
  21. 排序去重

       cat 1,.txt  | sort | uniq >> 2.txt
    

你可能感兴趣的:(linux)