记录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翻译为找 ...
随机推荐
- ionic环境配置
1.现在 npm install -g ionic 直接安装ionic2版本.用ionic1版本开发,用 npm install -g ionic@1.6. 2.第一次输入: ionic serve ...
- (3)Python3笔记之变量与运算符
一.变量 1). 命名规则: 1. 变量名不能使用系统关键字或保留关键字 2. 变量区分大小写 3. 变量命名由字母,数字,下划线组成但不能以数字开头 4. 不需要声明变量类型 是 a = 1 ...
- C# - 匿名对象取值
在new出匿名对象的函数内可以直接调用该匿名对象的属性取值. 可是在其它函数就无法调用匿名对象的属性或方法. 这时,我们可以通过c#的反射机制取值: 文章出处:https://www.cnblogs. ...
- hadoop2.4.1 伪分布
最终的 /etc/profile :#在文件最后添加 # /etc/profile # System wide environment and startup program ...
- SQL Server物化视图学习笔记
一. 基本知识 摘抄自http://www.cnblogs.com/kissdodog/p/3385161.html SQL Server索引 - 索引(物化)视图 <第九篇> 索引视 ...
- anacoda 安装默认源中没有的包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 1 安装失败 conda install pygame 2 搜索 anaconda se ...
- jQuery文档操作--append()、prepend()、after()和before()
append(content|fn) 概述 向每个匹配的元素内部追加内容,这个操作与对指定的元素执行appendChild方法,将它们添加到文档中的情况类似 参数 content 要追 ...
- python 试题归纳及答疑 更新中.....
一.Python基础篇(80题) 1.你为什么学习Python? 一.答题思路 1.阐述 python 优缺点 2.Python应用领域说明 3.根据自身工作情况阐述为什么会使用python 1)py ...
- IoC, DI,Spring.net
IoC : Inversion of Control , 控制反转,就是创建对象(实例)的权利由开发人员自己控制New转到了由容器来控制.实现了解耦. DI: Dependency Injection ...
- Linux基础命令---修改组信息grpmod
groupmod 修改组的基本信息,包括组名称.组ID等信息.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 gr ...