记录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翻译为找 ...
随机推荐
- iOS 新浪微博-5.0 首页微博列表
首页显示微博列表,是微博的核心部分,这一章节,我们主要是显示出微博的列表. 导入第三方类库 pod 'SDWebImage', '~> 3.7.3' pod 'MJRefresh', '~> ...
- iOS UI进阶-3.0 核心动画
Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<Quar ...
- 从零开始一起学习SLAM | 你好,点云
本文提纲 先热热身点云是啥你知道点云优缺点吗?点云库PCL:开发者的福音PCL安装指北炒鸡简单的PCL实践留个作业再走先热热身 小白:hi,师兄,好久不见师兄:师妹好,上周单应矩阵作业做了吗?小白:嗯 ...
- list异常
可能定义的时候没有初始化把 private List<Msg> msgList = new ArrayList<>(); 为啥我android老是忘了new ArrayList
- python快速开发Web之Django
以前写测试框架,要么是纯python代码驱动的,要么是WinForm界面的框架,多人操作并不适合. 就想用python写个Web版的,于是想到了Web快速开发的框架Flask和Django两个 个人觉 ...
- C++ new运算符
new 分配的数据类型:内置数据类型.自定义数据类型. 如果不成功,则 new 将返回零或引发异常:编写自定义异常处理例程并调用 _set_new_handler运行库函数(以您的函数名称作为其参数) ...
- java 控制台输入
import java . util . Scanner ; public class Test { public static void main(String[] args) { Scanner ...
- 为CSDN博客添加站内搜索栏目
栏目代码 <div id="panel_Search"> <img src="http://img.blog.csdn.net/201707190247 ...
- 韩松毕业论文笔记-第六章-EFFICIENT METHODS AND HARDWARE FOR DEEP LEARNING
难得跟了一次热点,从看到论文到现在已经过了快三周了,又安排了其他方向,觉得再不写又像之前读过的N多篇一样被遗忘在角落,还是先写吧,虽然有些地方还没琢磨透,但是paper总是这样吧,毕竟没有亲手实现一下 ...
- First Wainberg-2018-Deep learning in biomedicine Experience
ppt+paper 链接:https://pan.baidu.com/s/14toqjcSJti5ZXT3ff4rwIA 提取码:xgkt