记录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翻译为找 ...
随机推荐
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式
一.差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界.分包.组包顺序等问题,所以传输中的音视频数据往往会多一些字节. 举个例子,有 ...
- iOS 开发笔记-报错处理
1.xcode7报错:does not contain bitcode 解决方法:Build Settings 搜索 bitcode 将Enable Bitcode更改为NO即可 2.Code Si ...
- C\C++程序结束另外的进程
WinExec("taskkill /f /im center_flextrbo.exe",SW_HIDE);
- C# 图片 旋转和翻转 RotateFlip
1.Rotate90FlipX2.Rotate90FliY3.Rotate90FlipXY4.Rotate90FlipNone以上面四个为例:1是指定后接水平翻转的90度顺时针旋转,2是指定后接垂直翻 ...
- docker-php-ext-install.md(https://gist.github.com/giansalex/2776a4206666d940d014792ab4700d80)
```bash RUN apt update RUN apt upgrade -y RUN apt install -y apt-utils RUN a2enmod rewrite RUN apt i ...
- Mongo数据两表关联创建视图示例
表tblCard: {"cNo":"11","oRDate":ISODate("2017-08-01T00:00:00.000+0 ...
- django后台的制作
参考:http://zengestudy.blog.51cto.com/1702365/1902660 http://www.cnblogs.com/fnng/p/3737964.html 实现与后台 ...
- 元素位置pageX,pageY,clientX,clientY,scrollX,scrollY,screenX,screenY,offsetX,offsetY
总结: event.clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条. (可见区域)event.clientY 设置或获取鼠标指针位置相对于当 ...
- html5-文本属性
/*p{color: red;width: 50%;text-align: center;background: blue;}p{text-align: end;}p{text-align: end; ...
- 【转】C#中base关键字的几种用法
base其实最大的使用地方在面相对性开发的多态性上,base可以完成创建派生类实例时调用其基类构造函数或者调用基类上已被其他方法重写的方法.例如: 2.1关于base调用基类构造函数 public c ...