linux系统命令
1. 文件与目录管理
1.1 目录管理
1.1.1 创建
mkdir 目录名
1.2 文件管理
1.2.1 创建
vim name
touch name
1.2.2 写入
vim name #打开文件编辑
echo “内容” >> name #追加到文件末尾, 新起一行
echo “内容” > name #覆盖写入到文件
1.2.3 文件内容合并
paste f1 f2 #按列合并,以tab作为分隔符,
paste -d ‘,’ f1 f2 #以逗号作为分隔符
cat f1 f2 #按行合并
1.2.4 文件内容删除
cp /dev/null f1 #清空内容,cat /dev/null > f1
tr -s '\n' f1 #删除空行
tr -d ‘0-9’ f1 #删除所有数字
1.3 查看
1.3.1 文件详情
ls #只看文件名
ls -a #查看全部文件(包含隐藏文件)
ll #查看文件详情,或ls -l
ll -t #查看文件详情按时间排序,-r
file f1 #查看文件类型
1.3.2 文件大小
ls -lh #查看文件详情及大小
ls -lhS #查看文件详情,并按大小排序
du -sh f1 #查看指定目录或文件的大小
du -m f1 #以M为单位
du -am f1 #递归遍历目录
du -d 2 #遍历目录深度2
1.3.3 文件内容
cat name #显示文件全部内容
cat f1 f2 #查看(拼接)两个文件
cat -n f1 #查看文件,并显示行号
cat -b f1 #跳过空白行
cat -s f1 #空行只显示一次
head name #查看前10行
head -n 20 name #查看前20行
head -n -20 name #查看整个文件,除了后20行
tail name #查看前10行
tail -n 20 name #查看后20行
tail -n +21 name #查看整个文件,除了前21行
tail -f name #实时输出文件末尾的10行内容
less name #分屏查看文件内容,q退出,vim命令可用
2. 查询
通配符
* #任意0到多个
? #任意一个
[0-9] #其中一个[ab]
{ab,cd} #其中一组
2.1 查找实例
2.1.1 查找大文件
#查看当前目录下最大的前10个文件, 单位M, 递归两层, 路径缺省为当前目录
du -hm . --max-depth=2 | sort -nr | head -10
#查找大于100M的文件
find / -type f -size +100M |xargs du -shm 2>/dev/null
#查找已删除文件占用
lsof -L1
lsof |grep delete
2.1.2 查找可执行文件
which curl #查看可执行文件位置
whereis curl #查找应用程序位置
type curl #跟上面的差不多
2.2 文件名查找
locate
locate abc.py #从根目录查找abc.py,模糊匹配
find
find 路径 [选项] [要查找的内容]
默认递归
部分情况文件名要加引号
2.2.1 基础查询
以下选项均可组合
find . -name a* #按名称查找,当前路径下,a开头的文件
find . -type f #按类型查找,f文件,d目录
find . -perm 644 #按权限查找,644
find . -size +10M -size -120M #按大小查找,大于10m,小于100m的
find . -user 用户名或id #按用户查找,根据用户名或者用户id
find . -iname a* #按名称查找忽略大小写
find . ! -name a* #取反,按名称查找,不以a开头的文件
find . -prune f1 #排除指定的目录或文件
find . -maxdepth 1 #最大深度1,此处为当前目录
find . -mindepth 1 #最小深度1,此处为当前目录和1级子目录
find . -type f -print0 #每个文件名后添加空字符
find / -name update* 2> /dev/null #过滤没有权限的错误
#查找名字以log结尾,大于200M, 小于1200M的文件
find . -name "*.log" -size +200M -size -1200M
2.2.2 多条件与正则查找
多个条件
find . \( -name *.txt -or -type f \) -and -size +1M
-and
!
正则查找
find . regex ‘正则表达式’
find . -iregex #忽略大小写正则
2.2.3 对每一条查询结果执行命令
方式一:
find . -name "*.log" -size +200M -exec ls -lh {} \;
find . -name "*.log" -size +200M -exec ls -lh {} +
#{}代表参数, \;对分号转义,表明ls命令的结束,而非find命令结束
方式二:
find |xargs du -shm
#默认find的查询结果(参数)放在语句最后,
2.2.4 按时间查询
以天为单位
-atime 7 #最近访问时间,正好在之前的第7天
-mtime -7 #最近修改时间,7天内
-ctime +7 #最近权限变更时间,超过7天
以分钟为单位-amin -mmin -cmin
2.3 内容查找
grep 参数 要查找的内容 路径
grep -r --include=*.py . #当前路径下递归查找
grep默认模糊匹配, 精确匹配用-w参数
2.3.1 内容查找grep
grep abc *.log #查找当前目录下,所有包含abc的文件log文件
grep -n #查找内容加行号
grep -r #递归
grep -R #递归
grep -w #精确查找, 缺省模糊匹配
grep -B 3 #显示查找到的内容之前3行的数据
grep -A 3 #显示查找到的内容之后3行的数据
grep -C 3 #显示查找到的内容前后各3行的数据
grep -l #显示匹配的文件
grep -L #显示不匹配的文件
grep --include=*.py #包含指定文件
grep --exclude=*.log #不包含log文件
grep --exclude=*.{log, out} #不包含log和out文件
grep --exclude-dir=f1 #不包含指定目录
grep -r "mai" . *.{c,cpp} #从当前目录递归搜索c,cpp结尾的包含mai的文件
注:其他用法见2.5结果过滤
2.3.2 重复项查找
uniq file #不排序, 直接查看,
sort file | uniq #重复项只显示一次
sort file | uniq -c #重复项只显示一次, 并显示重复次数
sort file | uniq -u #重复项一次都不显示
sort file | uniq -d #只查看重复项
sort file | uniq -cd #只查看重复项, 及重复次数
2.4 对结果排序
可对文件/目录/查询结果进行排序
sort f1 #对文件内容排序
sort -n #按数值排序
sort -r #逆序
2.5 结果中过滤
grep ‘^[a]’ #可直接使用基础正则
egrep ‘’ #可使用全部正则
grep -e 模式一 -e 模式二 #多条件查找
grep --color=auto #显示颜色
grep -v #取反,不显示指定项
grep -n #行号
grep -c #匹配到的行数
grep -o #只输出匹配到的文本
grep -i #忽略大小写
2.6 对结果执行命令
|xargs du -sh #对每条输出执行 du -sh,上一条命令的输出放在最后
|xargs -l {} #上一条命令的输出传入参数{},可把参数放在命令中间执行
|xargs -l {} service {} start #对每条输出执行service start命令
|xargs -0 #以空字符作为分隔,默认是空格,常用于find查找到的文件含空格情况
3. 终端使用
3.1 历史命令
ctrl r #快捷键,搜索执行过的命令,向上查找
ctrl s #搜索框里向下查找
ctrl g #退出命令搜索
vim !$ #使用上一条命令的最后一个参数
history 9 #查看最近的9条命令
!7 #执行编号为7的命令
!cat #运行上一条cat开头的命令
3.2 多条命令
ctrl z #当前进程放在后台
; #逐条执行
&& #前面的命令执行成功再执行后面的
|| #前面的命令执行不成功才执行后面的命令
$() #把命令的执行结果作为参数
3.3 后台执行
nohup 命令 &
3.4 输出
- /dev/null #丢弃正确输出
- /dev/null #丢弃错误输出
&> /dev/null #全部丢弃
4. 进程与服务
4.1 进程
ps -ef # 查看所有进程
top # 实时显示进程状态
pgrep firefox #查找指定进程
ps -ef |grep [f]irefox #查看指定进程,首字母用方括号,能避免显示grep本身
ps -ef e #查看进程及环境变量
ps -ef f #查看进程树
ps -ef --sort -pid,+stat #进程排序,pid降序,stat升序
-L #查看线程
strace -p pid #跟踪进程执行情况, 查看进程是否被锁等
kill pid #结束进程, -15
kill -2 pid
kill -1 pid
kill -3 pid
kill -9 pid
4.2 服务
systemctl start vsftpd #启动指定服务,
service vsftpd start #启动服务,旧版
chkconfig --list # 列出所有系统服务
chkconfig --list | grep on # 列出所有启动的系统服务
setup #启动项管理
5. 磁盘与文件系统
5.1 文件系统
df -h # 查看各分区使用情况
5.2 磁盘
lsblk #查看树形硬盘表
cat /etc/mtab
cat /proc/partitions # 查看分区
ls /dev/oracleasm/disks
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
5.3 挂载
5.3.1 命令
mount | column -t #查看挂接的分区状态
mount /dev/sda1 /mnt/1 #设备sda1挂载到/mnt/1目录
umount /mnt/1 #取消挂载
可选参数
-o ro 只读
-o rw 读写
-o loop 挂载文件
-o iocharset 指定字符集
-t 指定文件系统类型,缺省自动识别
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs
5.3.2 配置文件
vim /etc/fstab
6. 用户管理
w # 查看活动用户
id <用户名> # 查看指定用户信息
finger # 用户详细信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务
passwd -l username //禁止登陆
7. 网络
7.1 命令
ifconfig # 查看所有网络接口的属性
ip addr #新版命令
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
hostname #查看主机名
7.2 ping指定端口
host 主机或域名
nmap -p 443 host #nmap
nc host 443 #netcat
telnet host 443 #Telnet
curl host:443 #curl
7.3 配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network
vi /etc/hosts
7.4 防火墙
iptables -L # 查看防火墙设置
7.5 ssh
- 配置
- 命令
7.5.3 端口转发
- 本地端口转发
中转主机需要开启ssh服务,
ssh -L 2000:localhost:3000 username@中转主机ip
#访问本机2000端口, 将经过中转主机转发到中转主机的3000端口
ssh -L 2000:目标主机ip:4000 username@中转主机ip
#访问本机2000端口, 将经过中转主机转发到目标主机的4000端口
- 远程端口转发
ssh -R 2000:localhost:3000 username@中转主机ip
中转主机:目标主机(本机)
#访问中转主机的2000端口, 将转发到本机的3000
ssh -R 2000:192.168.1.3:3000 username@中转主机ip
中转主机:目标主机(本机能访问到的主机)
#访问中转主机的2000端口, 将转发到本局域网内192.168.1.3的3000端口
- 动态端口转发
ssh -D localhost:2000 username@中转主机ip
本机 远程
不指定远程端口, 本机经过2000端口的数据, 都会到达中转主机.比较适用于目标主机开了多个端口, 且需要访问多个端口的情况
8. 压缩与归档
8.1 tar
tar
v 详情
f 文件名(放在参数的最后)
c 创建
x 解包
t 查看包里的内容
z Gzip
j Bzip2
8.1.1 归档
tar -cvf test.tar f1 f2 #打包文件f1,f2为test.tar
tar -zcvf test.tgz f1 f2 #打包文件为gzip压缩文件
tar -jcvf test.tbz f1/ #打包目录为bzip2压缩文件
8.1.2 解包
tar -xvf test.tar #解包文件test.tar
tar -xvf test.tar #解包文件test.tar
tar -jtvf test.tbz2 #查看bz2文件里的内容
tar -jxvf test.tar.bz2 #解压并解包bz2文件
tar -zxvf test.tar.gz #解压并解包gzip文件
8.2 zip
8.2.1 解压
unzip -l file #查看压缩包内容
unzip -t file.zip #测试压缩文件
unzip file #解压文件
unzip -v file #解压并显示详情
8.2.2 压缩
zip 压缩后的文件名.zip 要压缩的文件/文件夹/多个文件
zip file.zip file #压缩文件
zip -r file.zip f1 f2 #递归压缩子目录
zip -9 file.zip f1/ #指定压缩级别9(最高最慢),0最低(相当于tar),缺省6
zip feil.zip . -i \*.txt #只压缩当前目录的txt文件
zip -e file.zip f1 #压缩并创建密码
9. 系统设置
9.1 系统信息查看
uname -a #查看内核/操作系统/CPU信息
uname -r #查看当前使用的内核
cat /etc/issue # 查看操作系统版本cat /etc/centos-release
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
lsmod # 列出加载的内核模块
env # 查看环境变量
9.2 系统状态查看
free -h # 查看内存使用量和交换区使用量
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
vmstat
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载
9.3 包管理
9.3.1 包管理命令
rpm -qa # 查看所有安装的软件包,红帽
安装
yum install python #红帽
apt install python #ubuntu
9.3.2 软件源配置
9.3.3 源码安装
./confiure --prefix=/usr/local/bin #自定义安装位置
make && make install
9.4 设置授时服务器
/usr/sbin/ntpdate -s 授时服务器

浙公网安备 33010602011771号