Linux 命令手册

这是一篇非常不垂直的blog,日常见到用到的linux命令 & shell语法记录在此。

date

shell中date命令+表示非设置
date +%s 显示当前时间戳
date -d @ts +%Y-%m-%d %H:%M:%S 显示时间戳ts的年月日时分秒格式的时间
date -d $1 +%s 显示输入参数$1的时间戳
@后面跟时间戳

date 支持语义的转换 例获取上个月的最后一天
 date -d `date +%y%m01`"-1 day"
echo

echo -e 支持转义符号
echo -n 不换行输出

column -t

列对齐

set -e

set -e如果当前shell脚本运行到某一行,code码非0,退出。
set +e即使code码非0,仍然继续执行下面的逻辑。

引号

shell中的三种引号

curl

语法格式 curl [option] url
option
-o 下载的内容默认输出到屏幕,-o指定输出到指定文件,-o后必须跟文件名 curl -o download.txt url

-O 和-o类似,-O是以下载的文件本名作为文件名,也就不用跟文件名了,curl -O url

-s 静默模式,不展示下载的进度和速度等信息。

-L 支持重定向。

-m设置超时时间,curl -m 3 url

-w 获取curl的附加信息,通过%{有效名称} 的方式,curl -w %{http_code} url
有效名称包括:

名称 含义
http_code HTTP状态码
local_ip 本地ip
local_port 本地端口
redirect_url 重定向URL
remote_ip 远端ip
remote_port 远端端口
size_download 下载的数据总字节数
speed_download 平均每秒的下载速度
time_total 完成一次连接请求的总时间

curl 的用法指南

$

$n 第n个参数,当n=0时,表示这条命令本身
$? bash上一条命令的返回值,0表示执行成功!
$*$@ 都表示全部的参数,不同之处是加了引号后:"$*"将把所有参数攒成一个字符串,"$@"把每个参数作为一个字符串返回。
$# 参数的个数。
$! 当前进程号

awk

awk [options] 'pattern {action}' filelist
-F "xx" 指明输入时的字段分隔符
NF 字段数量
NR 当前行号
示例:
awk '{printf("%6.2f %s\n",\$2*\$3,$0)}' xxx.data | sort 按照第2列和第3列的乘积 排序输出,$0是本行

cat access.log.2019070517 | grep /assistantdesk/desk/student/performance | cut -d " " -f 4 | sort | uniq -c | sort -r |head -10 统计日志中第四个参数(例如ip)出现次数最多的前10名

head -1 access.log.2019070517 | awk -F ' ' '{for(i=1;i<=NF;i++){print $i}}' | cat -n 一条日志 行转列 并加行号

grep

grep [options] pattern 文件路径
常用option:
-i : 忽略字母大小写
-v:取反匹配,==过滤
-w:匹配单词,如果grep -w num,那么number不会出来
-q:静默模式

grep --color=auto 高亮匹配
grep -oP pattern 截断匹配的内容
grep xxx -r * 递归匹配当前目录下的xxx
grep "^$" 过滤空白行
grep -v "^$" 过滤非空白行
grep -E "0{1,2}" -E使grep支持扩展正则,grep -E 可用 egrep代替。非扩展的正则表达式大括号和圆括号都需要转义,很烦。
grep -E 'k1|k2'匹配k1或者k2

sed 上古神兵

sed [options] '匹配条件&操作指令;匹配条件&操作指令;' file
options:

选项 功能
-n ,--silent 因为sed命令默认会向屏幕输出,设置此选项后阻止输出
-r 支持扩展正则,sed默认是不支持扩展正则的
-i [suffix] 直接修改源文件,如果设置了后缀名,sed将将数据备份;sed默认是只修改缓冲区的,并打印到屏幕上
-e 指定需要执行的sed命令,支持使用多个-e参数
-f 指定需要执行的脚本文件,需要提前将sed命令写入文件中

基本操作指令

指令 功能
p 打印当前匹配条件匹配的行
l 打印当前匹配条件匹配的行(显示控制字符)
= 打印行号
a text 在匹配的行后添加字符串text,text是独占一行
i text 在匹配的行前添加字符串text,text是独占一行
d 删除匹配的行
c text 将匹配的行的整行替换为text
r filename 从filename中读取内容添加到匹配的行后面
w filename 将匹配的行的内容写到文件filename中
q [exit code] 立刻退出sed脚本
s/regexp/replace/ 使用正则匹配,替换匹配到的数据,不是整行哦;regexp是正则表达式,replace是用来替换的字符串
s/regexp/replace/g 加个g,如果一行数据中有多个regexp,都替换成replace
s/regexp/replace/number 加个n,如果一行数据中有多个regexp,仅仅替换第n个

数据定位方案

格式 功能
数字 1就是第一行; 1,3就是第一行到第三行;
数字1~数字2 数字1是起始行号,数字2是步长,例如1~3 等于匹配1,4,7,……
数字1,+N 从数组1开始及其后面N行,例 1,+3
$ 匹配最后一行
/regexp/ 正则表达式
\cregexpc 使用正则表达式匹配,c可以是任意字符,\xAAx将匹配AA
反操作
find

find path -name "xxx" 按照文件名进行匹配,支持正则
find path -size +2048 按照文件大小进行匹配,+2048是大于,-2048是小于,2048是等于;
单位是数据块,一个数据块=512字节
find path -group root 查找所属组是root的
find path -user root 查找所有者是root的
find path option time 按照时间进行匹配
option :
-amin访问时间,单位分钟;
-cmin属性被修改时间,单位分钟;
-mmin内容被修改时间,单位分钟;
-mtime内容被修改时间,单位天。

time:
+n超过n单位, -n小于n单位, n等于n单位。

find path -type 类型 根据文件类型进行匹配
类型:f是文件 ,d是目录 ,l是软链接
find path -regex exp 根据正则表达式exp匹配
find -maxdepth n 最多搜索n级子目录;
find -mindepth n 从第n级子目录开始搜索;

find balabala -exec command {} 将find到的路径传给command作为参数

组合使用:
exp. find . -maxdepth 2 -a -name test.php
[①-⑤] -a [①-⑤] and操作
[①-⑤] -o [①-⑤] or操作

xargs

配合find使用,-i 获取管道前的内容放到{}中
find . -type f -name "*.log" | xargs -i cp {} /tmp/k/
find . -type d -name "*.php" | xargs -i rm -rf {}

一些其它搜索:
locate file 在文件资料库中查找文件
updatedb 手动更新资料库

which command 搜索命令所在的目录及别名信息
whereis command 搜索命令所在的目录及帮助文档路径

查看磁盘空间

df -h

du -sh path

scp

推到远端ip
scp -r mypath/dir homework@192.168.xx.xx:/remotepath/

拉到我的机器
scp -r homework@192.168.xx.xx:/remotepath/dir mypath/

修改登陆

su root
passwd homework(用户名)
passwd 是修改root的登陆密码

rm 命令

1、反向删除 rm -rf !(keep) 除了keep正则匹配的文件都删除
可能会报错,执行 shopt -s extglob 设置bash支持正则匹配,可解决这个问题。

能解决95%以上问题的Linux命令

算数运算

$((2+3)) $[2+3] let 5*4 整数四则运算
bc bc计算器
示例:echo "obase=8;15" | bc 将15转换为8进制

条件判断

[\bexp\b] or [[\bexp\b]] or test exp exp是逻辑判断,\b代表空格,必须有。被测试的表达式exp推荐用双引号引起来。


[][[]]的区别:
[[]]支持逻辑运算符 >、 <、 && 、||、==的模式匹配甚至正则表达式,但是[[]]在部分脚本解释器中有(Bash\Zsh等)。

docker相关

获取容器id,装填到containers
containers=$(docker ps | grep base | awk '{print $1}' | xargs -i echo {})
遍历容器id,获取IP=10.100.244.13的容器id
for c in $containers; do echo $c; docker inspect $c | grep IPAddress | grep '10.100.244.13' ;done

软链硬链

ln -s 源文件路径 软链名称 创建软链
ln 源文件路径 硬链名称 创建硬链
软链和硬链的区别:
1、源文件被删除后,软链失效,硬链照常读写(本质是硬链指向源文件inode号,多个文件名指向同一个inode号码,一个文件名删除,不影响其它文件名访问);
2、软链可以跨磁盘、分区,硬链不行。
3、软链可以指向文件夹或者文件,硬链只能指向文件。

cpu性能指标

cr :https://www.cnblogs.com/hapjin/p/6296296.html

性能监控命令 | CPU

①user cpu执行用户进程占用的时间片比例
②system cpu执行系统内核进程占用的时间片比例
③idle cpu执行系统缺省空闲进程占用的时间片比例
④nice 改变过优先级的进程(nice值不为0)因优先级改变而额外配分配的时间片比例
⑤wait 等待io消耗的时间片比例

定时脚本 crontab

1、安装cron yum -y install cron
2、root用户 编辑 /etc/crontab 文件
一个定时任务的格式为 cron表达式 用户名 命令
例:注意 dellog.sh中的路径不能写相对路径,会找不到!
3、systemctl restart crond.service 启动crontab生效

每小时的第50分钟 执行dellog.sh
查看端口信息

netstat -nltp
lsof -i:8000
netstat -anp | grep ${pid} 查看pid监听的端口,eg.nginx的master进程的pid

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容

  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 3,979评论 7 54
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,029评论 0 2
  • 1. 最普通的命令 最普通、简单的命令,平时肯定用过很多,但是有些非常有用,但平时不多用的,本次列出来,如下: s...
    求索77阅读 410评论 0 0
  • 第1章 小试牛刀 $ 是普通用户,# 表示管理员用户 root。 shebang:#!。sharp / hash ...
    巴喬書摘阅读 6,333评论 1 4
  • 1)幽默的本质 发笑的三种机理 意外感说出的话和我们日常的逻辑相悖,是荒谬的、矛盾的。 我讨厌两种人,一种是地域黑...
    FullStackX阅读 481评论 0 0