本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
Shell Sed指定字符前面与后面添加文件sed -i 's/指定的字符/需要添加的字符&/' 文件名称修改Linux启动配置将 GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"改为 GRUB_CMDLINE_LINUX="ipv6.disable=1 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet"在rhgb之前添加 net.ifnames=0 biosdevname=0# 备份配置文件\cp /etc/default/grub /etc/default/grub.baksed -i 's/ rhgb/ net.ifnames=0 biosdevname=0&/' /etc/default/grub# cat /etc/default/grub......GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet"指定字符后面添加sed -i 's/指定的字符/&需要添加的字符/' 文件名称在GRUB_CMDLINE_LINUX=" 后面添加 ipv6.disable=1# 备份配置文件\cp /etc/default/grub /etc/default/grub.baksed -i 's/GRUB_CMDLINE_LINUX="/&ipv6.disable=1 /' /etc/default/grub# cat /etc/default/grub......GRUB_CMDLINE_LINUX="ipv6.disable=1 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap n...
我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql、web server等。因此管理 linux 服务器主要工作就是配置并管理上面运行的各种服务程序。在 linux 系统中服务程序的管理主要由 init 系统负责。如同笔者在《初识 systemd》一文中的介绍,linux 的 init 系统已经从最初的 sysvinit 进化到了如今的 systemd。本文主要介绍在 systemd 环境中如何编写运行服务的配置文件。unit(单元)的配置文件Unit 是 systemd 进行任务管理的基本单位,我们在前文中已经介绍过,service 类型的 unit 代表一个后台服务进程。接下来我们就详细的介绍如何配置 service 类型的 unit。下面我们先来看一个简单的服务配置:[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
User=prometheus
Restart=on-failure
WorkingDirectory=/usr/local/share/prometheus/
ExecStart=/usr/local/share/prometheus/prometheus \
-config.file=/usr/local/share/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target
这是笔者主机上 prometheus 服务的配置文...
Linux系统使用shell杀掉大量批量的类似进程碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择。 代码:1ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 " $2}' |sh1. ps -ef|grep aaa|grep -v grep 这是大家很熟悉的命令,这里就不再多说,就是从当前系统运行的进程的进程名中包含aaa关键字的进程。2. 后面部分就是awk命令了,一般awk命令的格式为:awk ' pattern {action} ' print是打印,kill -9 是强制停止进程的命令, $2就是前面有ps -ef命令得出的结果的第二列上显示的内容。下面举一个简单的例子:#ps -ef|grep boco|grep -v grep root 9884 9883 0 17:10:01 ? 0:00 sendmail -oem -oi -froot boco root 9883 9880 0 17:10:01 ? 0:00 /usr/bin/mail boco boco 11112 1 0 Dec 24 ? 0:00 ./boco_appmaster -d /home/boco/agen...
JAVA应用程序启动脚本#!/bin/bash#进入当前目录 并自动查找jar包cd $(dirname $0)APP_HOME=$(pwd)APP_NAME="$(cd ${APP_HOME} && find -name '*.jar')"#使用说明,用来提示输入参数usage() { echo "Usage: sh robotcenter.sh [start|stop|restart|status]" exit 1}#检查程序是否在运行is_exist() { pid=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}') #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi}#启动方法start() { is_exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid=${pid}" else # nohup java -jar ${APP_NAME} >/dev/null 2>&1 & #Xms Xmx 指定虚拟内存上下限 nohup ${JRE_HOME}/bin/java -Xms16384M -Xmx16384M -XX:SurvivorRatio=8 -XX:+PrintGCDetails -Xloggc:./logs/gc.log -XX:+PrintHeapAtGC / -XX:+PrintGCDateStamps -jar ${APP_NAME} >/dev/null 2>&1 & echo "..." ...
shell判断变量的值是否为空方法判断一个脚本中的变量是否为空,我写了一个这样的shell脚本:#!/bin/sh#filename: test.shpara1=if [ ! -n $para1 ]; then echo "IS NULL"else echo "NOT NULL"fi然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL很是奇怪,最后,通过查询一些资料发现,|可以通过如下方式判断一个shell变量是否为空:1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL.#!/bin/shpara1=if [ ! -n "$para1" ]; then echo "IS NULL"else echo "NOT NULL"fi2. 直接通过变量判断 如下所示:得到的结果为: IS NULL#!/bin/shpara1=if [ ! $para1 ]; then echo "IS NULL"else echo "NOT NULL"fi3. 使用test判断 得到的结果就是: dmin is not set! #!/bin/shdmin=if test -z "$dmin"then echo "dmin is not set!"else echo "dmin is set !"fi4. 使用""判断#!/bin/shdmin=if [ "$dmin&...
如何在Linux中查找和删除空目录和文件 1. 使用 find -empty 查找当前目录中的空目录: $ find . -type d -empty 2. 使用以下命令删除当前目录下的所有空目录: $ find . -type d -empty -exec rmdir {} \; 3. 使用 find -empty 查找当前目录中的空文件: $ find . -type f -empty 注: 通常,某些程序会将空文件创建为占位符、锁定文件或用于通信的套接字文件。 4. 当前目录(和子目录)下有多少个空文件?要计算当前目录下的空文件数,请将 find 命令通过管道传送到 wc -l。 $ find . -type f -empty | wc -l 5. 当前目录(和子目录)下有多少个非空文件? $ find . -type f -not -empty | wc -l 注: Find 选项 -not 会还原其后面的选项。 在上面的所有示例中,将 ( . ) 点替换为要搜索文件的任何其他目录路径。
正则表达式及文本处理三剑客 前言 一、正则表达式 基本正则表达式元字符: 扩展正则表达式元字符(需要egrep或者转义) 二、文本处理三剑客 grep sed awk 前言 玩转Linux操作系统必须会shell,会shell必须知道正则表达式及grep、sed、awk文本处理三剑客。好多年前有个大佬告诉我,不知道正则不要说自己会Linux,为此我专门学习这部分内容,这篇文章是对我学习内容的整理,也是我经常查阅的一篇笔记,也希望他可以帮助到...
linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计去除重复行sort file |uniq
查找非重复行sort file |uniq -u
查找重复行sort file |uniq -d
统计sort file | uniq -c
去除重复的行,并生成新的文件sort file |uniq > new_file
1、新建一个文本文档touch test.file2、在指定行前插入 一行内容:sed -i 'ni\x' test.file 表示向test.file文件里的第n行的前面添加x内容sed -i 'na\x' test.file 表示向test.file文件里的第n行的后面添加x内容sed -i '/m/i\x' test.file 表示向test.file文件里匹配m字符串的行的前面添加x内容sed -i '/m/a\x' test.file 表示向test.file文件里匹配m字符串的行的后面添加x内容标红的 -i 这个参数意味着在源文件上进行修改,而不是产生新文件3、在指定行后插入多行内容没有发现很好的方法首先,将需要插入的内容写道一个txt里sed -i '/ str/r a.txt' test.file 表示向test.file文件里匹配到str的行后加a.txt里面的内容
shell中删除文件中重复行的方法Linux下文本处理工具很丰富很强大,例如这样一个文件:复制代码代码如下:cat logwww.jb51.net 192.168.1.1www.jb51.net 192.168.1.1www.jb51.net 192.168.1.2ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeefffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggggggg可用以下方法去除重复行:1.使用uniq/sort删除重复行注意:单纯uniq是不行的。复制代码代码如下:shell> sort -k2n file | uniq > a.out这里我做了个简单的测试,当file中的重复行不再一起的时候,uniq没法删除所有的重复行。经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。2.使用用sort+awk命令注意:单纯awk同样不行,原因同上。复制代码代码如下:shell> sort -k2n file | awk '{if ($0!=line) print;line=$0}'也可以使用 awk '!i[$1]++' log;3.用sort+sed命令,同样需要sort命令先排序。复制代码代码如下:shell> sort -k2n file | sed '$!N; /^\(.*\)\n\1$/!P; D'
shell:awk筛选出文本中指定列字符串长度为指定长度的行$num=2awk -v x=$num '{if(length($2)<=x){print $0}}' text.txt#在text.txt中筛选出第二列字符串长度小于等于2的行#其中在中文的一个汉字长度为3
shell 8种字符串截取方法假设有变量 var=http://www.aaa.com/123.htm.1. # 号截取,删除左边字符,保留右边字符。1echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm2. ## 号截取,删除左边字符,保留右边字符。1echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符即删除 http://www.aaa.com/结果是 123.htm3. %号截取,删除右边字符,保留左边字符1echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符结果是:http://www.aaa.com4. %% 号截取,删除右边字符,保留左边字符1echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符结果是:http:5. 从左边第几个字符开始,及字符的个数1echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。结果是:http:6. 从左边第几个字符开始,一直到结束。1echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。结果是 :www.aaa.com/123.htm7. 从右边第几个字符开始,及字符的个数1echo ${var:0-7:3}&nbs...
有的时候需要对文件执行删除删除操作,这个时候比较常用的会使用vi命令中的dd命令,比如先执行10G(跳转到第10行),然后再执行20dd(删除20行),但实际情况未必是这么常规,比如说,要删除文件中,某行长度超过200个字符的行,如果文本比较小,还好,如果是几万行,几十万行的呢? 这个想用vi就不现实了。 我然想到的办法就是:比如说,通过sed,awk,egrep命令来达到目的。 举个简单例子。假如说如下文本文件,要将其中长度为5字符以上的给删除掉。root@linux# cat data
1
22
333
4444
55555
666666
7777777
88888888
方法一: 使用awk命令的length()函数root@linux# cat data | awk '{if (length($0) <=4 ) print $0}'
1
22
333
4444
方法二: 使用grep命令 root@linux# cat data | egrep -w '^.{1,4}'
1
22
333
4444
方法三: 使用sed命令root@linux# cat data | sed -n '/^.\{5,\}/!w NewFile'
root@linux# cat NewFile
1
22
333
4444备注:1. 使用awk,grep命令的时候,可以将处理好的文件重定向到另外一个新文件中2. egrep -w参数,表示仅跟模式匹配的单词3. ^. 表示以任意字符开头的行,这个和-w命令匹配使用,这个很关键,否...
Shell 函数linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:[ function ] funname [()]
{
action;
[return int;]
}说明:1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255下面的例子定义了一个函数并进行调用:#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"输出结果:-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----下面定义一个带有return语句的函数:#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum ...
Using Loops (while, for) in awk scripts,AWK中使用 while,for 循环 The awk programming language contains many of the programming concepts that are used in shell scripting. Conditionals, such as the if statement and loops, such as the following can also be used in awk programming.The while loopThe do while loopThe for loopThe if StatementThe if statement can have two branches: an if branch and an else branch. If the condition is true, the if branch is executed; if the condition is false, the else branch is executed.if (condition) {
statements
} else {
statements }You can nest if statements. When examining nested if statements and one or more of the if statements has an else statement, it is difficult to know with which if the else is operating. The simple rule is: Each else works on the closest if that does not yet have its own else; for example:if (condition) {
if (condition) {
statements
} else {
statements
}
}In th...
最新评论