linux日常命令记录

文本处理

  • sed命令

替换:sed 's/被替换字符/替换字符/g' file_name

删除文件所有空行:sed '/^$/d' file_name

删除文件所有注释:sed '/*#/d' file_name

  • echo命令

查看第一行的第一栏:echo a b c | awk '{print $1}'

查看一行的第一和第三栏:echo a b c | awk '{print $1,$3}'

  • paste命令

合并两个文件或两栏的内容:paste file1 file2

合并两个文件或两栏的内容用“+”号区分:paste -d '+' file1 file2

  • sort命令

排序两个文件的内容:sort file1 file2 

取出两个文件的并集(重复的行只保留一份):sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)

删除交集,留下其他的行:sort file1 file2 | uniq -u 删除交集,留下其他的行

取出两个文件的交集(只留下同时存在于两个文件中的文件):sort file1 file2 | uniq -d 

  • comm命令

比较两个文件的内容只删除 'file1' 所包含的内容:comm -1 file1 file2 

比较两个文件的内容只删除 'file2' 所包含的内容:comm -2 file1 file2 

比较两个文件的内容只删除两个文件共有的部分:comm -3 file1 file2 

字符设置和文件格式转换

将一个文本文件的格式从MSDOS转换成UNIX:dos2unix filedos.txt fileunix.txt 

将一个文本文件的格式从UNIX转换成MSDOS:unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS

将一个文本文件转换成html:recode ..HTML < page.txt > page.html 将一个文本文件转换成html

显示所有允许的转换格式:recode -l | more 

各种备份命令

  • dump命令

制作一个 '/home' 目录的完整备份:dump -0aj -f /tmp/home0.bak /home 

制作一个 '/home' 目录的交互式备份:dump -1aj -f /tmp/home0.bak /home 

还原一个交互式备份:restore -if /tmp/home0.bak 

  • rsync命令

同步两边的目录:rsync -rogpav --delete /home /tmp 

通过SSH通道rsync:rsync -rogpav -e ssh --delete /home ip_address:/tmp 

通过ssh和压缩将一个远程目录同步到本地目录:rsync -az -e ssh --delete ip_addr:/home/public /home/local 

通过ssh和压缩将本地目录同步到远程目录:rsync -az -e ssh --delete /home/local ip_addr:/home/public 

  • dd命令

通过ssh在远程主机上执行一次备份本地磁盘的操作:dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 

备份磁盘内容到一个文件:dd if=/dev/sda of=/tmp/file1 

做一个将 MBR (Master Boot Record)内容复制到软盘的动作:dd if=/dev/hda of=/dev/fd0 bs=512 count=1 

从已经保存到软盘的备份中恢复MBR内容:dd if=/dev/fd0 of=/dev/hda bs=512 count=1 

  • tar命令

执行一次对 '/home/user' 目录的交互式备份操作:tar -Puf backup.tar /home/user 

通过ssh在远程目录中复制一个目录内容:( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 

通过ssh在远程目录中复制一个本地目录:( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 

本地将一个目录复制到另一个地方,保留原有权限及链接:tar cf - . | (cd /tmp/backup ; tar xf - ) 

从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录:find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 

查找所有以 '.log' 结尾的文件并做成一个bzip包:find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 

文件的特殊属性

  • chattr命令

使用 "+" 设置权限,使用 "-" 用于取消

只允许以追加方式读写文件:chattr +a file1 

允许这个文件能被内核自动压缩/解压:chattr +c file1 

在进行文件系统备份时,dump程序将忽略这个文件:chattr +d file1 

设置成不可变的文件,不能被删除、修改、重命名或者链接:chattr +i file1 

允许一个文件被安全地删除:chattr +s file1 

一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘:chattr +S file1 

若文件被删除,系统会允许你在以后恢复这个被删除的文件:chattr +u file1 

显示特殊的属性:lsattr 

用户设置

设置用户口令的失效期限:chage -E 2016-4-22 user1 

检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户:pwck 

检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组:grpck 

登陆进一个新的群组以改变新创建文件的预设群组:newgrp group_name 

工作常用

检查进程运行状态:ps -ef | grep 进程名称

杀死进程:kill -9 进程号 如:ps aux|grep zabbix |awk '{print $2}' |xargs kill -9

查看某个时间段到现在日志:sed  -n  '/2016-04-23 09:00:00/,$p'   system.log.2016-04-23  |  less

根据条件查找文件:grep server_name *.conf --color=auto

批量替换:find . -type f -name "*.conf"|xargs perl -pi -e 's|listen       80|#listen       80|g'

a,b机器之间文件传输:

  a机器:python -m SimpleHTTPServer(默认端口是8000)  #需要在当前文件执行

  b机器:wget http://ip_add:8000/文件的名字

获取Java堆栈信息:

  sudo -u user1 /usr/local/java/bin/jstack 进程号(top查看最高的java进程) > a.txt

找到最高的JAVA线程

        top -H -p 进程号

把线程号转成16进制

        printf "%x" 327

        147

去a.txt里面查找147

        vim a.txt   /147

jstat -gcutil 23116 1000 5

git常用

查看版本:git remote -v

拉取用户的代码:git fetch user1

切换并创建新的分支:git checkout -b 创建的分支名  分支

删除分支:git branch -D 分支

查看分支:git branch

切换分支:git checkout 分支名称

原文地址:https://www.cnblogs.com/allan-king/p/5422105.html