目录
基本学习方式
- help命令或者man命令查询linux指令相关用法
- 命令大全网站 https://man.linuxde.net/
- 勤加练习与思考
系统查询
//查看系统信息
[root@izbp1ezkmfgg9tbm7bpj4sz admin]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
[root@izbp1ezkmfgg9tbm7bpj4sz admin]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
命令行快捷键
control + a 光标转移到行首, a有ahead之意
control + e 光标转移到行首, e有end之意
control + u 删除光标之前的字符
control + k 删除光标之后的字符
control + r 反向搜索执行过的命令,如果不符合期望,可以重复执行此命令
远程连接ssh
ssh root@192.168.0.1 连接远程服务器,在提示下输入密码
文件相关操作
scp
拷贝本地文件夹 /home/search 到目标机器 home目录下
scp -r /home/search root@192.168.10.132:/home -- 文件递归拷贝,加**-r**参数
find
find . -name "search" -- 在当前目录及其子目录下寻找名字为search的文件或文件夹
find . -iname "admi*" --在当前目录及其子目录下寻找名字以admi开头的文件或文件夹,忽略大小写
https://man.linuxde.net/find
文件排序
1,按照时间升序
命令:ls -lrt
详细解释:
-l use a long listing format 以长列表方式显示(详细信息方式)
-t sort by modification time 按修改时间排序(最新的在最前面)
-r reverse order while sorting (反序)
2,按照时间降序(最新修改的排在前面)
命令:ls -lt
详细解释:
-l use a long listing format 以长列表方式显示(详细信息方式)
-t sort by modification time 按修改时间排序(最新的在最前面)
https://www.cnblogs.com/wangkongming/p/3994962.html
查找文件内容
说明 | 命令 |
---|---|
查找关键字,选取第四、七列、最后5千行,定位输出到文件中 | `grep “GET /rest/search” access.log |
以逗号分隔日志,打印第8,9列 | awk -F',' '{print $8}' so.access.log |
文本排序
awk -F',' '{print $8}' so.access.log|awk -F'"' '{print $4}'|sort | uniq -c | sort -nr |head -n 20
先自然排序,再统计行出现频率,再按出现频率进行倒排。
文件全路径
ls
pwd
/hdc_me*
查看当前路径下文件名以hdc_me
开头的所有文件的全路径
递归创建新目录
mkdir -p A/B/C
如果目录C已经存在,则此执行此命令无意义;若C之上的任意一级目录不存在,都会递归创建后才创建C目录。
下载gz文件并解压到指定位置
curl "http://xxx.tao.tgz" | tar xz -C /home/admin/abc/
tail
tail -n 200 file.txt 查看文件的最后200行
tail -n +200 file.txt 从第200行开始查看文件
sed
sed ‘s/^/taobao,&/’ file
在每行的行头增加taobao, 字符串
sed ‘s/$/ ABC/’ file1
追加 ABC到每行末尾
$为末尾符号,s代表替换末尾为 ABC
sed ‘s/原字符串/替换字符串/g’
sed ‘s/^M//g’ file1.txt > file2.txt
注意: ^M的输入方式是 Ctrl + v ,然后Ctrl + M
替换文本中的^M不可见字符
/g表示全局替换,详见以下链接
awk
echo “string1 (string2) string3” | awk -F ‘[()]’ ‘{print $2}’
以( 和) 作为分隔符
echo “string1 {string2} string3” | awk -F ‘[{}]’ ‘{print $2}’
以{和}作为分隔符
awk -v OFS=“-”
指定输出分隔符为-
- 提取奇数行记录
awk ‘NR%2 !=0’ a.txt
- 提取行号末尾数字为0-3的行记录
awk ‘{ if(NR%10<3) {print}}’ file.txt
sort
-u //去重并排序
-r //倒排
-n //按照数值的大小排序
基础训练
遍历+是否为空
遍历一个文件每一行,分析其是否在另外一个文件出现过,出现过则打印出来
#!/bin/bash
for line in `cat test.txt`
do
tep=`grep $line flight.txt`
# echo ${tep}
if [ -n "${tep}" ];then
echo $line
fi
done
grep xargs 遍历
遍历一个文件每一行,分析其是否在另外一个文件出现过。
cat test.txt |xargs -I {} grep {} flight.txt
参考 https://www.runoob.com/linux/linux-comm-xargs.html
shell删除文本比较长的行
https://blog.youkuaiyun.com/Jerry_1126/article/details/77871972
系统管理
top
P 键 按照cpu使用率排序
M 键 按照内存使用率排序
l 键 切换显示平均负载和启动时间信息
m 键 切换显示内存信息
t 键 切换显示进程和cpu状态信息
c 键 切换显示命令名称和完成命令行信息
mac下
先输入 o 键 ,再输入 cpu 则按cpu使用量排序,输入 rsize 按内存使用量排序。
字段含义
top - 09:32:58|up 61 days, 11:18|1 user|load average: 0.04, 0.05, 0.09
当前系统时间|系统已运行时间|在线用户,包含系统用户|系统负载。分别是1,5,15分钟前到潜在的平均值
Tasks|227 total| 1 running|225 sleeping|1 stopped|0 zombie
-|总进程数|正在运行的进程数|正在睡眠的进程数|停止的进程数|僵死进程数
%Cpu(s)|0.8 us| 1.0 sy| 0.0 ni| 98.2 id|0.0 wa| 0.0 hi| 0.0 si|0.0 st
-|cpu占用率(%),用户进程占用cpu百分率|系统占用cpu百分率|用户进程空间内改变过优先级的进程占用CPU百分比|cpu空闲率|等待IO的CPU时间百分比|硬中断(Hardware IRQ)占用CPU的百分比|软中断(Software Interrupts)占用CPU的百分比|虚拟机占用百分比
KiB Mem|8175028 total|635844 free|3024460 used|4514724 buff/cache
-|内存总量|内存空闲量|内存使用量|缓存的内存量
KiB Swap|15624016 total|15606756 free|17260 used| 4678020 avail Mem
-|交换区总量|交换区空闲量|交换区使用量|缓冲交换区总量
PID|USER|PR|NI|VIRT|RES|SHR|S|%CPU|%MEM|TIME+|COMMAND
进程号|进程创建者|进程优先级|nice值|进程使用的虚拟内存总量|进程使用的、未被换出的物理内存大小|共享内存大小|进程状态|进程占用cpu百分比|进程占用内存百分比|进程运行时间|进程名称
NI nice值。越小优先级越高,最小-20,最大20(用户设置最大19)
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
top -H -p pid 查找进程下占用cpu最高的线程 (-H -p 可简化为-Hp)
找到cpu最高的线程,用printf ‘%x\n’ pid 转换为16进制
文件管理
cat
查看不可见字符
cat -v {file}
行末的^M为不可见字符,换行符, 可
cat -v ${fileName} | sed ‘s/^M//g’ > ${fileName}.final 进行替换