SPRITEKING

Linux精选命令集锦

时间:公元14-08-10 栏目:Linux, LINUX系统管理 作者:SPRITEKING 吐槽:0 被黑客围观: 1,465 次





研究东西要保持一颗猥琐的心,本篇文章命令在网上搜集,谈不上原创转载,只是为了记录下来,方便工作之中使用。

linux 博大精深,但是我相信,我们每天学习一个命令,举一反三,终有一天会成为大师。所谓闻道有先后,术业有专攻!

shell

相关文章:

LINUX查看系统信息的几个命令

——————华————————————————————丽——————————————————————的—————————分————————————————————割———————————————————————————————————————

vim -x <FILENAME> vim也能给文件加密码

date -d @$(echo $((2 ** 31 - 1))) 看看unix世界末日的时间

ip route show dev ppp0 | awk '{ print $7 }' 任意设备绑定的ip

convert image1 image2 -resize '400x300!' MIFF:- | compare -metric AE -fuzz '10%' - null: 如何diff两个image

cal 04 2014 | awk 'NF <= 7 { print $7 }' | grep -v "^$" | tail -1 获取给定月份的最后一个星期六的日期

fdisk -l 查看分区

QQ图片20131201110238

lsof -p PID

lsof使用它既可以知道进程打开了哪些文件,也可以了解一个文件被哪个进程打开。

查看对某个文件的使用情况

查看哪些进程对某个文件进行了调用:

$ lsof /etc/passwd 1

查看对文件系统的使用

/tmp目录被垃圾文件塞满了, 但是, 用ls 又看不到太大文件, 谁干的?

$ lsof /tmp

查找打开,但是不能连接的文件

一个进程打开一个文件, 然后将其设为 unlinked 状态, 则此文件资源仍能被进程使用, 但是其访问路径已经被删除了. 因此, 使用ls不能将其列出. 只有当进程结束时, 才能释放文件占用的资源

查找unlinked 文件, 选项 +L, 作用: 列出打开文件的连接数

$lsof +L

指定连接数的上限 $lsof +L1

同时指定文件系统, 则需要使用 -a(AND) 选项

$ lsof -a +L1 /home

无法卸载

查看谁令mount的分区无法卸载

$ lsof <file_system_name>

查看监听socket
查看网络服务

$ lsof -i

查看某个网络连接

$ lsof -i@aaa.bbb.ccc

$ lsof -iTCP@aaa.bbb.ccc:ftp-data *指定协议*

$ lsof -i4 *指定IP版本*

$ lsof -i6

 

150 (1)
识别 Netstat 连接
例如: netstat -p -t -n 的输出为:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 218.56.203.246:52634 202.109.72.72:7000 ESTABLISHED

则可以: tony@tony:~$ lsof -iTCP@202.109.72.72:7000

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

xchat 4505 tony 12u IPv4 5775 TCP 218.56.203.246:52634->202.109.72.72:afs3-fileserver (ESTABLISHED)

查找针对某个命令打开的文件

使用命令的PID

$ lsof -p <PID>

使用命令名称

$ lsof -c <first_characters_of_command_name_that_interest_you>

$ lsof -c sendmail

查看谁在使用设备文件

$ lsof /dev/hda6
查看某个用户的操作

$ id -u tony

1000

$ lsof -u1000 or $ lsof -utony

$ lsof -u^tony * 则是取反的意思*

 

 

echo 'graph{node[shape=record];rankdir=LR;matrix[label="{1|2|3}|{4|5|6}|{7|8|9}",color=red]}' | dot -Tpng | display 使用dot画一个matrix

 

dd if=/dev/zero bs=64K count=1 | tr "\0" "\377" > all_ones 创建一个非全0的文件

 

stty sane 重置因为二进制字符导致bug 的终端

 

dd if=/dev/sda of=mbr.bk bs=512 count=1 备份BMR

 

150

 

 

<ESC> # 插入上次命令的参数

 

uuencode $file $file | /usr/bin/mailx -s "$file" ${USER} 将文件发送邮件给自己

 

sudo lsof -p `sudo ps aux | grep -i neo4j | grep -v grep | awk '{ print $2 }'` 查看进程的文件描述符

 

awk 'BEGIN { ARGV[ARGC++]=ARGV[ARGC-1] } NR!=FNR { if(num==0) num=NR-1; if(FNR<num) {print} else { ORS=""; print } } ' abc1.txt > abc2.txt 删除\n字符在文件的末尾

 

echo "I'm going to paste this into WINDERS XP" | xsel -i 使用PuTTY和XMing将文本复制到windows剪切板中

 

ffmpeg -i movie.avi -s 320x240 -b 1000k -vcodec wmv2 -ar 44100 -ab 56000 -ac 2 -y movie.wmv 转换avi为wmv

 

dmidecode | awk '/VMware Virtual Platform/ {print $3,$4,$5}' 查看是否运行再vmvare上

 

fdupes DIRECTORY/ -r -d 查找相同的文件

 

find . -name .svn -print0 | xargs -0 rm -rf 删除所有.svn

 

git status | grep deleted | awk '{print $3}' | xargs git rm 从git index中删除多个已经在磁盘中被删除的文件

 

head -$(($RANDOM % $(wc -l < file.txt) +1 )) file.txt | tail -1 随机取文件的一行

 

wc -L 输出最长行

 

<your command here> | perl -n -e 'print "$_" if 1 ... /<regex>/;' 显示命令输出中从第一行到第一次匹配正则的行之间的容

 

which somecommand 定位一条命令

 

cat tarfile.tar.gz | ssh server.com " cd /tmp; tar xvzf - directory/i/want" 解压缩到远端目录

 

sed -e "/$USER/d;s/:.*//g" /etc/group | sed -e :a -e '/$/N;s/\n/ /;ta' 显示你不属于那个用户组(和groups命令相反)--- 使用sed

 

perl -ne 'while (/([0-9]+\.){3}[0-9]+/g) {print "$&\n"};' file.txt 从文件中提取ip

 

sudo dd if=/dev/sda of=/media/disk/backup/sda.backup 使用dd备份硬盘

 

dpkg-query -l| grep -v "ii " | grep "rc " | awk '{print $2" "}' | tr -d "\n" | xargs aptitude purge -y 清理无用的配置文件

 

apt-get remove $(dpkg -l | awk "/^ii linux-(image|headers)/ && ! /`uname -r`/ {print \$2}") Ubuntu 清理无用的 Kernels

 

grep test somefile | grep -v -e error -e critical -e warning 多个pattern的grep

 

curl -U username[:password] -x proxyserverIP:proxyserverPort webpageURI 通过需要登录认证的代理服务器get一个页面

 

sudo grub-install --root-directory=/media/ubuntu /dev/sda 用live cd修复grub2启动失败

 

grep lm /proc/cpuinfo 查看cpu位数

 

ls -lct /etc/ | tail -1 | awk '{print $6, $7, $8}' 查看系统安装时间

 

wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off [url of website] 下载某个网址下的所有map3

 

HISTFILE=/dev/null 关闭当前shell会话的历史记录

 

ls -al | grep ^d 只ls目录

 

for x in `ps -u 500 u | grep java | awk '{ print $2 }'`;do ls /proc/$x/fd|wc -l;done 查看指定用户打开的文件数量

 

netstat -rn | awk '/UG/{print $2}' 默认网关

 

echo 127.0.0.1 | egrep -e '^(([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-4])\.){3}([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-4])$' 匹配ip

 

find . -name "*~" -exec rm {} \; 删除vim的临时文件

 

find . -name "*.txt" -exec WHATEVER_COMMAND {} \; 解决通配符提示 Arguments too long 一种方法

 

du -cah /path/to/folder/ | grep total 目录的大小

 

CTRL+s 暂停和继续终端上的处理

 

eh () { history -a ; vi ~/.bash_history ; history -r ; } 编辑命令历史

 

find . -type f -exec chmod a-x {} \; 递归地把当前目录下的所有文件,去掉可执行权限

 

diff <(sort file1.txt) <(sort file2.txt) 比较两个已排序的文件

 

:set nu 显示行号

 

convert example.png -resize 100x100! output.png 缩放图片

 

read -s PASS; echo $PASS | convert sensitive.jpg -encipher - -depth 8 png24:hidden.png 加密图像

 

netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | sed s/::ffff:// | cut -d: -f1 | sort | uniq -c | sort -n 统计每个IP的IPv4连接数

 

ls | egrep -v "[REGULAR EXPRESSION]" | xargs rm -v 删除除了文件名含有指定pattern的文件

 

ls -l | grep ^- 以长格式只列出文件

 

find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done) 查找失效符号连接

 

sed -n '/^.\{255\}/!p' 清除多余255个字符的行

 

sudo fc-cache -f -v 刷新字体缓存

 

cdparanoia -B 在当前目录下翻录CD音轨为wav文件

 

tar -zcvpf backup_`date +"%Y%m%d_%H%M%S"`.tar.gz `find <target> -atime +5` 2> /dev/null | xargs rm -fr ; 备份并删除access time在5天前的文件

 

perl -e '$p=qr!(?:0|1\d{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?)!;print((shift=~m/^$p\.$p\.$p\.$p$/)?1:0);' 123.123.123.123 用perl检查ip是否合法

 

rpm -qa --qf "%-30{NAME} %-10{SIZE}\n" | sort -n | less 按字母顺序排序安装的rpm

 

dd if=/dev/cdrom | pv -s 700m | md5sum | tee test.md5 带有进度条的md5制作

 

find dir/ -type f | xargs tail -fqn0 一次tail一个目录的所有文件

 

lsof -i tcp -i udp 查看开启的端口

 

SSHPASS='your_password' sshpass -e ssh me@myhost.com 自动ssh密码

 

find . -type f -exec chmod -x {} \; 递归清理执行权限

 

view /file/name 在read only 模式下打开文件

 

apache2 -l 查看apache加载的模块

 

ifdata -pN eth0 获取ip地址

 

ps -L -p <pid> | wc -l 得到Solaris系统上某个进程的线程个数

 

vim sftp://[user@]host.domain.tld:[port]/[path/][file] 用vim打开一个远程文件

 

cat file.gz.cpt *[a-z] | ccdecrypt -k yoursecretpassword | tar -xzf - 解密(ccrypt)的tar包

 

fold -s <filename> 软换行一个文本

 

fromdos <file> 转换 dos 文本格式 到 unix

 

:r !command 在 vim 中读取 命令的输出到文本中

 

tar cfvz - /home/user | netcat -l -p 10000 通过netcat传文件

 

perl -e 'printf "%02X:%02X:%02X:%02X:%02X:%02X\n", rand 0xFF, rand 0xFF, rand 0xFF, , rand 0xFF, rand 0xFF, rand 0xFF' 生成一个随机mac

 

less -XF 让less命令像cat命令一样工作,如果它的输入文本可以刚好打在一屏内

 

find . ! -name "*.tar.gz" 在find时反向选择

 

rpm -qa --queryformat '%{SIZE}\n' | awk '{sum += $1} END {printf("Total size in packages = %4.1f GB\n", sum/1024**3)}' 查看rpm内容的大小

 

exiv2 -M"set Exif.Photo.DateTimeOriginal `date "+%Y:%m:%d %H:%M:%S"`" filename.jpg 设置图片EXIF信息中的时间戳

 

sox Klaxon.mp3 -t wav - |ssh thelab@company.com paplay 在远端播放mp3

 

set colsep "{char}" Oracle: 设置列分割符

 

rename 's/\d+/sprintf("%02d",$&)/e' -- $@ 转换单个数字为两位数

 

tail -n 0 -f /var/log/messages 查看文件内容增长

 

svn log -v --xml file:///path/to/rep | grep kind=\"file\"|wc -l 查看svn中的文件数量

 

apachectl fullstatus 检查apache状态

 

pdfunite 1.pdf 2.pdf united.pdf 合并pdf的工具

 

grep '^[^#]' squid.conf 清除文件注释

 

mail -H | grep '^.U' | wc -l 查看新邮件数量

 

git clean -dfx 从git仓库中移除所有没有被追踪的文件或目录

 

find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/" 目录树

 

for a in $(< FILENAME); do echo "$(bc <<< $(wc -m<<<$a)-1) $a";done|sort -n 输出一个文件所有的单词并按长度排序

 

mencoder "mf://*.jpg" -mf fps=8 -o ./video.avi -ovc lavc 使用jpg生成avi

 

watch -tn1 'date +%T | xargs banner' 数字时钟

 

file=ftp://ftp.gimp.org/pub/gimp/v2.6/gimp-2.6.10.tar.bz2; ssh server "wget $file -O -" > $PWD/${file##*/} 通过远程的SSH服务器,安全的下载一个文件

 

somecommand | open "mailto:?body=$(cat - | stripansi | urlencode)" 把stdout 发送到 默认email 客户端

 

rpm --query --filesbypackage [packagename] 列出rpm包中的文件

 

find . -maxdepth 1 -type f -size +1M -printf "%f:%s\n" | sort -t":" -k2 显示排序列表文件的大小超过1MB的当前目录

 

grep -rF --include='*.txt' stringYouLookFor * 在特定文件类型中grep

 

printf "%`tput cols`s"|tr ' ' '#' 命令行中显示一行#

 

sudo strace -pXXXX -e trace=file 查看一个进程正在干什么

 

apt-get install `ssh root@host_you_want_to_clone "dpkg -l | grep ii" | awk '{print $2}'` None

 

parallel -j 50 ssh {} "ls" ::: host1 host2 hostn | sort | uniq -c 命令行map reduce

 

ping -c 1 -q MACHINE_IP_OR_NAME >/dev/null 2>&1 && echo ONLINE || echo OFFLINE 检查机器是否在线

 

rm *[!teste0,teste1,teste2] 删除除了 特定的文件名的文件

 

echo -ne "\e[32m" ; while true ; do echo -ne "\e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/nu 另一个《黑客帝国》效果的实现

 

grep -v "^$" filename > newfilename 清除文件中的空行

 

VBoxManage modifyvm "vm-name" --vrdp on --vrdpport 3389 --vrdpauthtype external 启动vm时候同时启动 rdp

 

nc -l portnumber 简单的socket服务器用户可以接受telnet数据

 

write user hello 给用户发消息

 

cat /etc/passwd | column -nts: 格式化文本为表格

 

function avg { awk "/$2/{sum += \$$1; lc += 1;} END {printf \"Average over %d lines: %f\n\", lc, sum/lc}"; } 求所有列的平均数

 

START=20; END=50 echo $(($START+(`od -An -N2 -i /dev/random`)%($END-$START+1))) 生成一个范围内的随机数

 

history | tail -(n+1) | head -(n) | sed 's/^[0-9 ]\{7\}//' >> ~/script.sh 用最后键入的n条命令创建脚本

 

trickle sudo apt-get update -y 有带宽限制的升级

 

echo "DISPLAY=$DISPLAY xmessage setup suphp perms htscanner acct#101101 host2.domain.com" | at 23:00 + 5 days 设置五天后23:00运行一个任务

 

grep -v "^\($\|#\)" <filenames> 清理注释和空行

 

function ends_in_y() { if [ `date +%A | sed -e 's/\(^.*\)\(.$\)/\2/'` == "y" ]; then echo 1; else echo 0; fi } 一个查看 今天的单词是不是以y 结尾 shell函数

 

usermod -a -G groupname username 把用户加入组

 

sed -n '/<Tag>/,/<\/Tag>/p' logfile.log 从日志中提取xml

 

find . -name '*.java' -o -name '*.xml' | grep -v '\.svn' | xargs wc -l 计算源代码行数 忽略svn

声明: 本文由( SPRITEKING )原创编译,转载请保留链接: Linux精选命令集锦

Linux精选命令集锦:等您坐沙发呢!

发表评论


Time

新浪微博

音乐

为您推荐