Linux
绝世好阿狸
这个作者很懒,什么都没留下…
展开
-
Linux 磁盘IO方式
用户态 vs 内核态:操作系统也是程序,有对应的程序代码,而且也要占用内存。计算机的部分内存以及部分函数就是专门分给操作系统使用的,也就是内核态。而普通的用户进程只能访问用户内存,如果需要使用系统资源,需要发起系统调用,也即转为内核态。内核态是对计算机资源的保护。Linux 磁盘IO方式1.基于中断的IO用户进程发起IO请求,进入内核态。cpu向硬件设备发送IO指令,随后cpu挂起当前进程,调度其他进程执行。当硬件设备处理完成后,发送中断信号给cpu,中断具有最高优先级,cpu会挂起当.转载 2021-02-27 16:46:55 · 470 阅读 · 0 评论 -
【Linux】问题排查
参考:https://fredal.xin/java-error-check排查cpu问题1.使用top命令查看进程top2.使用top命令查看线程top -H -p pid,这里-H表示详细展示线程信息3.打印线程idprintf '%x\n' pid4.使用jstack命令查看线程栈jstack pid | grep tid -A50有了线程堆栈信息,就可以方便排查耗cpu高的代码段了。另外,还可以查看总的线程状态jstack pid | grep 'ja原创 2020-09-12 11:17:59 · 293 阅读 · 0 评论 -
【shell】find -mtime -atime -ctime
find -mtime -atime -ctime考虑一个场景,如果想要定期删除服务产生的日志,比如自动打包3天前的日志,启动删除7天前的日志等。可以使用crontab+find的组合命令。find命令就需要判定文件的时间,有三种-atime,-ctime和-mtime。先看下三者的区别:-atime:最后一次读的时间戳;-mtime:最后一次修改内容的时间戳;-ctime:最后一...原创 2018-10-12 15:22:45 · 2807 阅读 · 0 评论 -
【Linux】查看端口 进程
netstat -tulpt:tcpu:udpl:listenp:pidps -ef原创 2018-12-16 14:40:35 · 190 阅读 · 0 评论 -
【shell】如何 grep "[FATAL ERROR!!!! xxx]" 这句话
不知道谁写的代码,记日志加了“[]”和多个"!"号,导致grep不到日志。。。这两个符号都是有特殊含义的需要转义。但是一个“!”可以不加转义,不知道为啥。总是以后遇到这几个特殊符号,都加“\”就行了。grep "\[FATAL ERROR\!\!\!\! xxx\]"...原创 2019-02-20 20:03:46 · 425 阅读 · 0 评论 -
iTerm2 配置 (zsh)
安装:http://www.siguoya.name/pc/home/article/256http://www.cnblogs.com/weixuqin/p/7029177.htmloh-my-zsh:https://github.com/robbyrussell/oh-my-zshhttps://github.com/robbyrussell/oh-my-...转载 2017-07-25 13:52:44 · 288 阅读 · 0 评论 -
【shell】awk 分组
直接用数组即可。a.txt文件:Tom baidu 8000Jerry alibaba 9000Jack tencent 8500Nika baidu 75001.分组求和,排序awk '{count[$2] += $3}END{for(i in count) print i, count[i]}' a.txt | sort -nrk 2baidu 15500a...原创 2019-05-09 00:07:15 · 947 阅读 · 0 评论 -
【shell】nohup 与 &
nohup与&其实都可以让一个任务在后台运行,区别在于nohup方式可以让子任务忽略sighup信号,也就是父进程退出后不会终止子进程。具体区别可以看这篇:https://www.jianshu.com/p/747e0d5021a2用法二者大同小异,取决于是否加nohup。nohup cmd [args] &t.sh:#!/usr/bin/env ...原创 2019-05-06 20:31:01 · 133 阅读 · 0 评论 -
【shell】查看磁盘命令
主要就是du和df两个。du即disk usage,查看使用情况;df即disk free,查看剩余情况;1.先看du使用:du 文件名:查看某一文件的大小;miracle@localhost:~/test|⇒ du a.txt8 a.txtmiracle@localhost:~/test|⇒ du -k a.txt4 a.txtmiracle@...原创 2019-05-06 23:38:57 · 3516 阅读 · 0 评论 -
【Linux】vim 常用总结
1.命令模式下1.1 删除一行:dd1.2 移动到最后一行:G2.末行模式下2.1 查找:/xxx 翻页是n2.2 全局替换:%s/old/new/g2.3 退出保存:wq2.4 退出不保存:q!...原创 2019-05-06 23:58:08 · 124 阅读 · 0 评论 -
【shell】正则表达式
语法老是有几点忘记,但是正则又很重要,花时间记一下。首先看一下通用的正则表达式规范,大概如下:1.位置相关这里的位置指的是从哪里开始匹配正则表达式,如果不指定,可以从任意位置开始或者结束。$:从行末开始匹配;^:从行首开始匹配;2.标识符是正则表达式最最基本的元素。包括:2.1 任意字符比如A,a等等;2.2 .点号表示任意字符,这个必须特殊记忆,如果...原创 2019-05-09 22:55:11 · 159 阅读 · 0 评论 -
【shell】cp
cp即copy,有以下三种用法:格式为:cp [参数] A B1.如果A为目录,则必须加上-r参数,表示递归把A目录下的所有目录文件递归地拷贝到B目录下。该种用法依赖于B目录是否存在。如果B目录没有,则新创建B并将A目录下的文件复制到B目录下,如果B目录有,则把A目录复制到B目录下,即被拷贝的A目录编程了B的子目录。2.如果A和B都是单个文件,那么就是把A文件内容复制为B,如...原创 2019-05-07 23:49:37 · 1132 阅读 · 0 评论 -
【shell】mv
mv命令要始终记得有两层含义,一是移动,二是重命名,一旦target即第二个参数不存在时,就会被当做重命名来处理。用的时候,如果是想移动,那么第二个参数必须是目录,如果目录不存在就当做重命名处理了,所以最好是在结尾加一个“/”,这样就肯定会被当做目录处理,就不会重命名了。移动可以是文件也可以是目录,也可以是多文件。如果是想重命名,那么第一个参数只能有一个。重命名文件,则第二...原创 2019-05-08 00:04:11 · 320 阅读 · 0 评论 -
【shell】sed 命令
sed全名是stream editor,文本的流式处理器。所谓的流式是与交互式相对的,交互式处理器比如vim。用法:1)行内替换;使用s命令,格式为sed "s/pattern/replacement/flags"。pattern是新内容,replacement是老的要被替换的内容,支持Basic RE。flags是替换选项,总共有以下四种:a)数字,表示替换第几处,...原创 2019-06-01 12:15:33 · 1058 阅读 · 0 评论 -
【shell】find -exec 命令
格式如下:find dir -exec cmd \; 但是通常,后面的cmd命令需要处理find查询到的文件,所以需要把文件名传给cmd。这时,可以使用占位符{}来表示find到的文件名。那么格式变为了:find dir -exec cmd {} \;上面的形式,shell会每一个find到的文件去执行一次cmd命令。如果想让find到的文件一次性执行完cmd命令,那么可...原创 2018-10-11 23:32:23 · 6053 阅读 · 0 评论 -
【shell】find 命令(转)
https://www.binarytides.com/linux-find-command-examples/ https://blog.csdn.net/yakoo5/article/details/17709561转载 2018-10-11 15:34:46 · 276 阅读 · 0 评论 -
【shell】split str
发现一个好办法,使用shell中string替换操作即可。这是shell的特定方法,因为shell定义数组是以空格来分割元素的,所以,我们只需要把原本的string中的分隔标志替换为空格,然后用得到的结果来构建一个新的数组即可。str="a,b,c,d,e"arr=(${str//,/ }) for i in ${arr[@]} do echo $i done原创 2017-11-21 08:19:23 · 531 阅读 · 0 评论 -
【Linux】ssh
ssh是一个远程登录的工具,提供加密服务。1.安装,只需要sudo apt-get install openssh-server和sudo apt-get install openssh-server即可。安装好以后就可以直接使用了。使用方式就是ssh user@ip,如果不写user@,那么是默认以当前执行shell的用户名来访问的,如果ssh的端口号改变了,那么需要加上-p参数指定端口原创 2017-07-09 15:59:57 · 326 阅读 · 0 评论 -
【docker】sshd
虽然说很多人觉得容器应该只运行一个应用,不应该有sshd,但是这里还是以学习的态度记录一下docker搭建sshd的过程。生成密钥:ssh-keygen -t rsa这里我没搞懂passphase是干吗用的,上网查了一下,如果说我采用非密码方式登录,一旦别人登了我的电脑,就可以使用我的key来登录其他的远程主机,所以如果在创建key的时候,输入了passphase,那么以后的每原创 2017-11-22 02:51:51 · 336 阅读 · 0 评论 -
【shell】各种括号
http://blog.csdn.net/taiyang1987912/article/details/39551385转载 2017-11-22 04:00:48 · 189 阅读 · 0 评论 -
【shell】数组
定义:有两种方法:1.采用()a=(10 20 30)2.采用下标:a[2]=1获取全部元素:echo ${a[*]}获取长度:echo ${#a[*]}遍历:1.类似于for each:for i in ${a[*]};do echo $idone2.采用c语言for循环语法,下标方式:for ((i=0; i原创 2017-11-22 04:35:51 · 161 阅读 · 0 评论 -
【shell】条件
首先shell中只有字符串这一种类型,没有整形或者浮点型。但是在定义变量时,可以采用单引号,双引号和不加引号。不加引号,如果变量内部有空白字符,则会被截断,所以这种情况必须加引号,单引号和双引号的区别就是变量替换,单引号不会替换。shell中用作条件测试的语法有两种[]和test。一般用[]更多,如果为了避免太多的[],可以用test。用[]时要注意,括号前后都必须有空格,否则报错。原创 2017-11-22 05:00:13 · 563 阅读 · 0 评论 -
【shell】几种括号的区别
${var}:或者变量值,也可以不加{},但是在特别情况下,我们需要指定变量名的范围,就需要加{}。比如或者数组长度${#arr[*]},如果不加,那么$#也是一个变量,代表传给脚本的参数数目。$(cmd):获取命令的执行结果$(()):整数计算,与let命令作用一样。原创 2017-11-22 05:08:44 · 463 阅读 · 0 评论 -
【shell】重定向
>表示覆盖>>表示追加二者默认是把标准输出作为源,也就是>等价于1> >>等价于1>>。如果想要把错误输出重定向,那么需要2>或者2>>如果想要把错误和标准定义到不同文件:cmd 1>std.txt 2>err.txt如果想要把错误定义到标准输出:cmd 2>&1这里的&是为了让shell把1解释为标准输出而不是一个名字为1的文件。如原创 2017-11-22 05:29:51 · 249 阅读 · 0 评论 -
【shell】cat
cat命令的本来含义是拼接。cat可以用于拼接多个文件的内容:cat f1 f2 f3使用-n参数可以显示行号,但是不改变文件内容。cat还可以接受stdin为输入:cmd | cat使用cat还可以将stdin的内容和文件的内容拼接起来:cmd | cat - f1 f2这里的“-”代表标准输入cat另一个常见用法是重定向并追加:c原创 2017-11-23 02:59:07 · 423 阅读 · 0 评论 -
【shell】find
find命令的大致格式是 find path 参数,其用法主要围绕find后面的参数选项展开。1.按照文件名查找:使用-name参数,后面跟文件名,可以使正则表达式或者通配符。当然也可以加多个匹配的条件,使用-o连接即可:find . -name "*.txt" -o -name "*.sh"也可以加否定,也就是在参数前加一个“!”表示否定。find . ! -name "*.原创 2017-11-23 04:58:48 · 1196 阅读 · 0 评论 -
【shell】tr
tr本意是traslate,转换。用法是:tr [options] 'set1' 'set2'解释:tr命令只能以stdin为输入,把输入的内容里set1的内容替换为对应的set2的内容。如果set1和set2长度相等,那么这就是一个一对一的映射,如果set1比set2多,那么set1多出来的部分会对应set2最后一个,反之,set2多出来的部分想会被忽略。如果是连续的字符,我们可以使原创 2017-11-23 05:41:26 · 318 阅读 · 0 评论 -
【shell】sort uniq
sort可以对文件内容进行排序,可以指定多个文件,默认按照字典序排序。如果要按照数字排序,可以使用-n参数。如果文件有多列,列是以空格区分的,那么可以指定按照特定的列排序,使用-k参数,1表示第一列。使用-r参数可以逆序排序。uniq只能接受一个排序文件为输入,所以sort管道uniq是一个常见用法。uniq只会显示不重复的行,意味着如果本来就不重复,会原创 2017-11-23 05:50:48 · 315 阅读 · 0 评论 -
【shell】sed
sed 是stream editor,流文本处理工具。工作流程大致是一行一行读入并且处理。能够配合正则表达式完成一些诸如替换和删除的文本处理工作。1.替换文本:sed 's/pattern/replace/' filename当然也可以从stdin获取输入,cat filename | sed 's/pattern/replace/'这里pattern是要查找的模式,可以是正则表达原创 2017-11-24 01:23:02 · 234 阅读 · 0 评论 -
【shell】grep 前后
今天发现一个好用的地方,grep 可以显示匹配行的上下文。-A num,显示之后num行;-B num,显示之前num行;-C num,显示之前和之后num行。这个在看日志方面还是很有用的。grep -A 2 "123" b.txtgrep -B 2 "123" b.txtgrep -C 2 "123" b.txt...原创 2018-03-29 21:21:05 · 794 阅读 · 0 评论 -
【Linux】Shell总结
1.Shell的类型:Shell是脚本语言,常见的有bash,sh,csh与ksh。bash是最常见的,是linux系统默认的shell。脚本语言相当于每一次执行都要编译,然后再运行,效率低但是功能强大,需要较少的代码就可以实现较复杂的功能。全部变量2.变量:定义变量不需要申明,直接赋值即可。需要注意的是赋值号左右两边不能有空格。必须紧挨着,比如“a=10”。在使用变量时必须加美刀符,原创 2017-06-18 19:49:53 · 299 阅读 · 0 评论