记录Linux中遇到的技巧
压缩排除.svn目录
打包test目录,排除其中所有子目录中的.svn文件夹:
# tar -zcf test.tar.gz test/ --exclude=.svn
# zip -qr test.zip test/ -x "**/.svn**"
npm安装模块命令
npm安装模块时经常出现权限错误,可以用下面的参数:
# npm install --unsafe-perm=true --allow-root
创建免密登录
在需要免密登录的发起端执行,命令2中使用接收端的用户名和IP:
# ssh-keygen -t rsa
# ssh-copy-id -i ~/.ssh/id_rsa.pub [username]@[ip address]
时间同步
安装crontab,配置每6个小时向ntp服务器同步一次时间:
# yum -y install vixie-cron
# crontab -e
*/ * * * /usr/sbin/ntpdate [ntp server ip] > /dev/null >&
sed命令常用
# sed -i "1 i [内容]"[path/to/file] #开头插入一行
# sed -i "$ a [内容]" [path/to/file] #末尾插入一行 # sed -i "[行号] i [内容]" [path/to/file] #指定行前插入一行(行号从1开始)
# sed -i "[行号] a [内容]" [path/to/file] #指定行后插入一行
# sed -i "[行号] d" [path/to/file] #删除指定行 # sed -i "/[关键字]/ i [内容]" [path/to/file] #匹配行前插入一行(所有匹配行都会操作)
# sed -i "/[关键字]/ a [内容]" [path/to/file] #匹配行后插入一行
# sed -i "/[关键字]/ d" [path/to/file] #删除匹配行 # sed -i "s/[原内容]/[新内容]/" [path/to/file] #匹配替换(每一行只替换第一个匹配的)(/可以用#或?代替防止与内容冲突)
# sed -i "s/[原内容]/[新内容]/g" [path/to/file] #匹配替换(替换所有匹配的) # sed -i "[行号] s/[原内容]/[新内容]/g" [path/to/file] #只匹配替换指定行
# sed -i "[起始行号],[结束行号] s/[原内容]/[新内容]/g" [path/to/file] #匹配替换指定的范围
# sed -i "/[关键字]/ s/[原内容]/[新内容]/g" [path/to/file] #只匹配替换匹配关键字的行 # sed -i "s/[原内容]/[新内容]/g" `grep "[原内容]" -l \`find -name config.xml\`` #与find和grep组合使用
awk命令常用
# awk '{print $1}' filename #$1~$n 每行分隔的第n个字段;$0 整行内容;NF 字段总数
# awk '{print "字段1:"$1"\t字段2:"$2}' filename #格式化组合显示
# awk -F ',' '{print $1}' filename #用逗号分隔,默认是空格分隔
# awk -F '[,#]' '{print $1}' filename #逗号或#号分隔
# awk -F '[,#]+' '{print $1}' filename #1个或多个,#分隔,比如,,或###
# awk -F 'GET|HTTP' '{print $1}' filename #以GET或HTTP分隔
# awk '{print "\""}' filename #print输出双引号
# awk '{print "'\''"}' filename #print输出单引号
# awk '{if(NR==1||(NR>2&&NR<4)) print $0}' #行数=1或3>行数>2;其他还有>=,<=,!=;若有多个文件NR会递增叠加,不递增单独计算的是FNR
# awk 'BEGIN {count=0;print "开始统计行数"} {print $0;count++} END{print "统计结束,行数是",count}' #自定义变量,统计行数,打印每行内容
# awk '/^#/' filename #正则匹配,以#开头的行
# awk '/^#/ {print $0}' filename #匹配后打印整行内容,与上一个表达式同义
# awk '!/^#/' filename #不以#开头的行
# awk '{if($0~/^1/) print "第"NR"行以1开头";else if($0~/^2/) print "第"NR"行以2开头";else print "第"NR"行以其他开头"}' filename #if else语句,相对于~,!~表示不匹配
批量删除BOM
# sed -i "s/\xEF\xBB\xBF//" `grep -Ilr $'^\xEF\xBB\xBF' .` #查到当前文件夹所有子目录中包含BOM的文件,然后删除BOM
批量处理^M
注意:^M在Linux命令行输入的方式是 ctrl+v,ctrl+m;
# sed -i "s/^M//" `grep "^M" -lr .` #查到当前文件夹所有子目录中包含^M的文件,然后删除
vim修改fileformat
:set ff #查看fileformat
:set ff=dos #配置fileformat为dos
:set ff=unix #配置fileformat为unix
:%s/^M$//g #删除所有的^M(^M=ctrl+v,ctrl+m)
vim删除重复行
:sort #先排序
:g/^\(.*\)$\n\1$/d #删除重复行
内存buff/cache清理
系统频繁大量读写文件会造成内存buff/cache过高,比如:
此时可以用以下命令进行清理:
sync;echo 1 >/proc/sys/vm/drop_caches 清理pagecache
sync;echo 2 >/proc/sys/vm/drop_caches 清理dentries和inodes
sync;echo 3 > /proc/sys/vm/drop_caches 都清理
查看进程中的线程
# ps -mp [pid] -o THREAD,tid,time
杀死所有匹配的进程
# ps -ef | grep [关键字] | grep -v grep | awk '{print $2}' | xargs kill -
Java内存信息
FGC监控,导出堆栈信息:
# jstat -gct [pid]@[ip]
# jmap -dump:format=b,file=[path/to/file] [pid]
# jstack -l [pid] > [path/to/file]
切换到上一次的目录
# cd -
使用上条命令的参数
# ll /mydata
# cd !$
cd /mydata/
用curl下载文件
# curl -OL "download url"
Linux命令行下载jdk包
windows下用浏览器访问jdk的网址,比如:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
找到要下载的包,右键,复制链接地址,如下图:
然后在Linux命令行:
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" [复制的地址]
或
curl -H "Cookie: oraclelicense=accept-securebackup-cookie" -H "Connection: keep-alive" -O -L "[复制的地址]"
配置时区
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
不支持zh_CH.utf8的处理
# localedef -c -f UTF- -i zh_CN zh_CN.utf8
# sed -i "$ a export LANG=zh_CN.UTF-8" /etc/profile
history增加用户和时间
# sed -i '$ a export HISTTIMEFORMAT="%F %T `whoami` "' /etc/bashrc
查看进程启动和持续时间
常用的 ps -ef 中能看到的两个时间分别是进程启动时间和累计使用cpu的时间,如果进程启动超过24小时启动时间就只显示日期,若要看精确的启动时间和持续时间,可以用下面的命令:
# ps -p [pid] -o lstart,etime # lstart 精确的启动时间, etime 进程的持续时间
ls显示更容易处理的日期和时间
ls命令有一个参数--time-style,其默认为locale,中文环境下用 ls -l ,文件的日期时间通常会显示为这样不方便处理的格式:
dr-xr-x---. 26 root root 4096 3月 10 10:19
dr-xr-xr-x. 19 root root 4096 7月 5 2019
若加上参数 --time-style=long-iso 则为:
dr-xr-x---. 26 root root 4096 2020-03-10 10:19
dr-xr-xr-x. 19 root root 4096 2019-07-05 18:32
对于写脚本时提取日期时间会方便很多。
若平时也想用这个格式,但每次都要加参数太麻烦了,可以定义环境变量:
export TIME_STYLE=long-iso
或者修改ll别名的定义(centos7中位于/etc/profile.d/colorls.sh):
alias ll='ls -l --color=auto --time-style=long-iso' 2>/dev/null
持续更新...
记录Linux中遇到的技巧的更多相关文章
- linux中vim使用技巧
一.导入文件内容 :r 解释 导入文件 示例 编辑模式下 # 将/tmp/test.txt内容导入到光标所在的位置的下一行 :r /tmp/test.txt :! 解释 在编辑文件时,执行系统命令 示 ...
- linux find命令-print0和xargs中-0使用技巧(转载)
本文介绍了linux find命令中-print0和xargs中-0用法技巧,一些find命令的使用经验,需要的朋友参考下. 本节内容:linux find命令中-print0和xargs中-0的用法 ...
- linux find命令-print0和xargs中-0使用技巧
文章是转载的,原文很精彩,我对其中个别地方没有快速理解,我在此予以补充,方便后续回顾理解. 本文介绍了linux find命令中-print0和xargs中-0用法技巧,一些find命令的使用经验,需 ...
- 教你一些Linux中隐藏bash历史命令的小技巧
导读 如果你登录过 Linux 系统,并敲过一些命令,那你应该知道,bash history 会记录你输入的所有命令.这个操作其实是有一定风险的. 我个人经常使用 Linux,所以我想着研究一番,看看 ...
- Linux中编写Bash脚本的10个技巧
Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...
- Linux中生成Core Dump系统异常信息记录文件的教程
Linux中生成Core Dump系统异常信息记录文件的教程 http://www.jb51.net/LINUXjishu/473351.html
- Linux中的文件查找技巧
前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用. witch witch命令会在P ...
- 在Linux 中进入单用户模式的技巧
在这篇简短的文章中,我们将向你介绍在 SUSE 12 Linux 中进入单用户模式的步骤.在排除系统主要问题时,单用户模式始终是首选.单用户模式禁用网络并且没有其他用户登录,你可以排除许多多用户系统的 ...
- linux中使用locate搜索文件方法记录
在linux中,有时用apt或者yum等软件包管理工具直接安装软件的时候,不知道软件到底安装到哪里去了,配置文件放哪里?这个时候就可以使用搜索命令locate来找到这些文件.海词上locate翻译为找 ...
随机推荐
- [LeetCode] 系统刷题6_Linked List
1. Dummy Node 2. Basic skills [LeetCode] 206. Reverse Linked List_Easy tag: Linked List 2. Fast slow ...
- linux申请strace ,lstrace, ptrace, dtrace
ltrace命令是用来跟踪进程调用库函数的情况. ltrace -hUsage: ltrace [option ...] [command [arg ...]]Trace library calls ...
- Go断后,Dart冲前,Google的野心
今天,我要讲讲新的前端web语言-Dart 我是网上看到这段话,激起了兴趣,虽然我不能算是真正的web前端从业者!哈哈 [ Dart语言由谷歌制造,用来替代Javascript,弥补Javascrip ...
- iOS UI基础-10.0 QQ聊天布局之键盘及文本使用
要实现的效果: 这里只说用到的几个知识点 1.图片包含文字 在设置文字的Frame的时候,使用背景(按钮)的尺寸,文字使用了内边距 背景图片,使用拉伸 /** * 返回一张可以随意拉伸不变形的图片 ...
- Response.Redirect & window.location.href
对接中信的微信H5支付时,对方(其实是微信)需要对我们的域名进行授权,即,我方需向渠道报备支付域名,微信只认可由此域名发起的支付交易. 支付中心只提供了一套支付接口供下游系统访问.因为给渠道报备的域名 ...
- System.Web.HttpException (0x80004005): 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
异常描述: Global.asax捕获到异常:System.Web.HttpException (0x80004005): 验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 < ...
- 回车和刷新以及Ctr+F5的区别
回车(url跳转)主要是判断本地缓存文件的Expires的有效时间,如果有效则直接使用客户端缓存 不在提交到HTTP服务器 F5 Expires设置不再起效果,只有Last-Modified/ETag ...
- c#之枚举,结构体
1.枚举 2.结构体 例子1: using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- HAProxy实现mysql负载均衡
安装 yum install haproxy 修改配置 vi /etc/haproxy/haproxy.cfg 配置如下 global daemon nbproc 1 pidfile /var/r ...
- 《大话设计模式》c++实现 状态模式
状态模式包含如下角色: Context: 环境类 State: 抽象状态类 ConcreteState: 具体状态类 2)适用场景: a)状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂 ...