BLOG

Record, summarize, and improve.

linux命令

系统

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区

# mount | column -t      # 查看所有挂载的文件系统
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
# lshw -short            # 查看硬件信息
# fdisk -l | grep -i sda # 查看设备文件对应硬件具体信息
# mount -o remount,rw /  # 重新挂载根文件系统(当根文件系统变为readonly时)

网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

进程

# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户

# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务
# pkill -kill -t pts/0    # 強制其他用戶下線

服务

# chkconfig --list              # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务

程序

# rpm -qa                # 查看所有安装的软件包

查看内存信息

# cat /proc/meminfo

查看机器型号

# dmidecode | grep "Product Name" 

查看网卡信息

# dmesg | grep -i eth

block设备

cat /sys/block/xx/queue/rotational的返回值(其中xx为你的硬盘设备名称,例如sda等等),如果返回1 则表示磁盘可旋转,那么就是HDD了; 如果返回0,则表示磁盘不可以旋转,那么就是SSD了

/proc/loadavg

1、5、15分钟内的平均进程数,分子是正在运行的进程数,分母是进程总数,另一个是最近运行的进程ID号。

释放缓存

To free dentries and inodes:

# echo 1 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

# echo 2 > /proc/sys/vm/drop_caches

这是一种非破坏性的操作,只会释放完全未使用的东西。 脏对象将继续使用,直到将其写到磁盘上并且无法释放。 如果先运行“同步”以将它们刷新到磁盘,则这些删除操作将倾向于释放更多的内存。

echo 3 > /proc/sys/vm/drop_caches

sudo dumpe2fs /dev/*

查看superblock

dmidecode

查看dmi(Desktop Management Interface)桌面管理接口

smbclient //10.100.20.145/share -U user

终端访问samba服务器

查看主设备号

cat /proc/devices | grep 253

查看次设备号

ll /dev | grep 253 | grep -v grep

查看所有分区挂载信息

mount | grep /dev

问题1:我创建了一个硬链接文件,但是我不知道放在那里了,请问怎么办?

思路:

  • 查找文件可以利用find命令。
  • 硬链接的特性,不会跨文件系统,所以源文件在哪个文件系统中,就在那里找
  • 硬链接文件和源文件具有相同的inode号,可以利用find的-inum参数和-samefile参数来查找。
  • inum参数表示按照inode号去查找,首先要查看文件的inode号
  • samefile参数表示查找和某个文件相同的inode的文件,不用查看文件的inode号
[root@lixin oldboy]# stat oldboy.txt  //获取文件的inode号码
  File:`oldboy.txt'
  Size:55              Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 148677      Links: 2
Access: (0644/-rw-r--r--)  Uid: (   0/    root)   Gid: (   0/    root)
Access: 2016-04-17 15:32:13.861206307 +0800
Modify: 2016-04-17 14:20:13.246213893 +0800
Change: 2016-04-17 16:04:17.023206128 +0800
[root@lixin oldboy]# find / -inum 148677 2>/dev/null //根据Inode号码查找,把错误提示丢弃
/usr/local/xiaoming
/data/oldboy/oldboy.txt
[root@lixin oldboy]#

问题2:我对文件n创建了一个软连接文件,但是我不知道放在哪里了,也不知道叫什么名字,请问怎么办?

思路:

  • 软链接可以跨文件系统,并且inode、属性都和源文件的不同没有规律可以寻
  • 当我们使用ls –l命令查看链接文件的时候,它都会以:filename -> link filename方式显示。
  • 我们寻找当前系统内所有的链接文件,然后过滤我们要找的源文件名n,就能查看有哪些文件指向了源文件。
[root@lixin oldboy]# find -type l -exec ls -l {} \;
lrwxrwxrwx 1 root root 1 Apr 17 16:21 ./xiaohong-> 1
lrwxrwxrwx 1 root root 10 Apr 17 16:16./oldgirl.txt -> oldboy.txt
[root@lixin oldboy]#    //找到文件后,长格式显示,然后过滤源文件名
	[root@lixin oldboy]# find -type l -exec ls -l {} \;| grep 'oldboy.txt'
lrwxrwxrwx 1 root root 10 Apr 17 16:16./oldgirl.txt -> oldboy.txt

tftp -g -r zImage 172.16.90.102

tftp获取文件