ubuntu里一些不熟的命令

ubuntu里一些不熟的命令

安装升级命令

查看软件 xxx 安装内容 
dpkg -L xxx
查找软件库中的软件 
apt-cache search 正则表达式 或
aptitude search 软件包
显示系统安装包的统计信息 
apt-cache stats
显示系统全部可用包的名称 
apt-cache pkgnames
显示包的信息 
apt-cache show k3b
查找文件属于哪个包 
apt-file search filename
查看已经安装了哪些包 
dpkg –l
查询软件 xxx 依赖哪些包 
apt-cache depends xxx
查询软件 xxx 被哪些包依赖 
apt-cache rdepends xxx
系统升级 
sudo apt-get update (这一步更新包列表)
sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等)
清除所有已删除包的残馀配置文件 
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。 
编译时缺少 h 文件的自动处理 
sudo auto-apt run ./configure
查看安装软件时下载包的临时存放目录 
ls /var/cache/apt/archives
备份当前系统安装的所有包的列表 
dpkg --get-selections | grep -v deinstall > ~/somefile
从上面备份的安装包的列表文件恢复所有包 
dpkg --set-selections < ~/somefile
sudo dselect
清理旧版本的软件缓存 
sudo apt-get autoclean
清理所有软件缓存 
sudo apt-get clean
删除系统不再使用的孤立软件 
sudo apt-get autoremove
查看包在服务器上面的地址 
apt-get -qq --print-uris install ssh | cut -d\' -f2

系统管理命令

查看内核 
uname -r
查看 Ubuntu 版本 
cat /etc/issue 或 cat /etc/lsb-release  或 lsb_release -dsc
查看内核加载的模块 
lsmod
查看 PCI 设备 
lspci
查看 USB 设备 
lsusb -v
查看网卡状态 
sudo ethtool eth0
激活网卡的 Wake-on-LAN 
sudo apt-get install wakeonlan  或 sudo ethtool -s eth0 wol g
查看 CPU 信息 
cat /proc/cpuinfo
显示当前内存大小 
free -m |grep "Mem" | awk '{print $2}'
查看硬盘温度 
sudo apt-get install hddtemp
sudo hddtemp /dev/sda
显示系统运行时间 $ uptime

硬盘管理命令

查看硬盘的分区 
sudo fdisk -l
硬盘分区 
sudo fdisk /dev/sda  
硬盘格式化 #危险!将第一个分区格式化为 ext3 分区, mkfs.reiserfs mkfs.xfs mkfs.vfat
sudo mkfs.ext3 /dev/sda1
分区挂载 
sudo mount -t 文件系统类型 设备路经 访问路经 
sudo umount 目录名或设备名
只读挂载 ntfs 分区 
sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c
可写挂载 ntfs 分区 
sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c
挂载 fat32 分区 
sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c
挂载共享文件 
sudo mount -t smbfs -o
username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share
挂载 ISO 文件 
sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso
查看 IDE 硬盘信息 
sudo hdparm -i /dev/hda
查看软 raid 阵列信息 
cat /proc/mdstat
参看硬 raid 阵列信息 
dmesg |grep -i raid
cat /proc/scsi/scsi
查看 SATA 硬盘信息 
sudo hdparm -I /dev/sda 或 sudo apt-get install blktool;sudo blktool /dev/sda id
查看目录占用空间 
du -hs 目录名
查看硬盘当前读写情况 # 首先安装 sysstat 包
sudo apt-get install sysstat
#每 2 秒刷新一次
sudo iostat -x 2

进程管理命令

连续监视内存使用情况 
watch -d free
动态显示进程执行情况 
top
top 指令运行时输入 H 或?打开帮助窗口,输入 Q 退出指令。
查看当前有哪些进程 
ps -AFL
查看目前登入用户运行的程序 
Who
统计程序的内存耗用 
ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort
-k2 -nr
按内存从大到小排列进程 
ps -eo "%C : %p : %z : %a"|sort -k5 -nr
按 cpu 利用率从大到小排列进程 
ps -eo "%C : %p : %z : %a"|sort -nr
将大于 120M 内存的 php-cgi 都杀掉 
ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}'
| xargs sudo kill -9
Linux 系统中如何限制用户进程 CPU 占用率 
renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'`
#或直接编辑/etc/security/limits.conf 文件。
查看进程打开的文件 
lsof -p 进程的 pid
显示开启文件 abc.txt 的进程 
lsof abc.txt
显示 22 端口现在运行什么程序 
lsof -i :22
显示 nsd 进程现在打开的文件 
lsof -c nsd
在后台运行程序,退出登录后,并不结束程序 
nohup 程序 & 
详细显示程序的运行信息 
strace -f -F -o outfile <cmd>
增加系统最大打开文件个数 
echo 4096 > /proc/sys/fs/file-max 或者  ulimit -n 4096
清除僵死进程 
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9
查看哪些进程占用了SWAP分区
for i in $(cd /proc;ls | grep “^[0-9]” | awk ‘$0>100’); do awk ‘/Swap:/{a=a+$2}END{print ‘”$i”‘,a/1024″M”}’ /proc/$i/smaps;done| sort -k2nr 

网络管理命令


根据 IP 查网卡地址 
arping IP 地址
根据 IP 查电脑名 
nmblookup -A IP 地址
查看当前 IP 地址 
ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'
查看当前外网的 IP 地址 
w3m -no-cookie -dump www.123cha.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\
{1,3\}\.[0-9]\{1,3\}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-
9]\{1,3\}\.[0-9]\{1,3\}'
查看当前监听 80 端口的程序 
lsof -i :80
查看当前网卡的物理地址 
ifconfig eth0 | head -1 | awk '{print $5}'
同一个网卡增加第二个 IP 地址  
sudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0   #在网卡 eth0 上增加一个 1.2.3.4 的 IP:
#删除增加的 IP:
sudo ifconfig eth0:0 down
立即让网络支持 nat 
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE
查看路由信息 
netstat -rn
sudo route -n
手工增加一条路由 
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
手工删除一条路由 
sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
统计当前 IP 连接的个数 
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq
-c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r
-n
统计当前大于 100 个 IP 包的 IP 地址段 
tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort |
uniq -c | sort -nr | awk ' $1 > 100 '
屏蔽 IPV6 
echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
察看当前网络连接状况以及程序 
sudo netstat -atnp
查看网络连接状态 
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看当前系统所有的监听端口 
nc -zv localhost 1-65535
查看网络的当前流量 #安装 ethstatus 软件
sudo apt-get install ethstatus
#查看 ADSL 的速度
sudo ethstatus -i ppp0
#查看 网卡 的速度
sudo ethstatus -i eth0
查看到某一个域名的路由情况 
tracepath baidu.cn
重新从服务器获得 IP 地址 
sudo dhclient
从当前页面开始镜像整个网站到本地 
wget -r -p -np -k http://wwww.chinaubuntu.com.cn 
如何多线程下载 
sudo apt-get install axel
axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip 或者 lftp -c "pget -n 5 http://x.x.x.x/xxx.zip“
如何查看 HTTP 头 
w3m -dump_head http://www.example.com  或 curl --head http://www.example.com
快速使用 http 方式共享目录 
#进入需要共享的目录后运行:
python -m SimpleHTTPServer
#其它电脑使用 http://ip:8000 来访问 #自定义端口为 8080:
python -m SimpleHTTPServer 8080

服务管理命令

添加一个服务 
sudo update-rc.d 服务名 defaults 99
删除一个服务 
sudo update-rc.d 服务名 remove
/etc/init.d/服务名 restart
/etc/init.d/服务名 stop
/etc/init.d/服务名 start
Ubuntu 中文社区 http://www.chinaubuntu.com.cn QQ 群: 65563370 联系邮箱:luguoxing@126.com

用户管理

增加用户 
sudo adduser 用户名
删除用户 
sudo deluser 用户名
修改当前用户的密码  
passwd
修改用户密码  
sudo passwd 用户名
修改用户资料 
sudo chfn userid
如何禁用/启用某个帐户 
sudo usermod -L 用户名 #锁定用户
sudo usermod -U 用户名 #解锁 或
sudo passwd -l 用户名 #锁定用户
sudo passwd -u 用户名 #解锁
增加用户到 admin 组,让其有 sudo 权限 
sudo usermod -G admin -a 用户名

文件管理

不显示以#开头的行 
cat /etc/vsftpd.conf |grep -v ^#
去除文件中的行号 
cut -c 5- a.py
删除文件中的重复行 
cat file.txt |sort -u
显示包含或者不包含字符串的文件名 
grep -l -r 字符串 路径 #显示内容包含字符串的文件名
grep -L -r 字符串 路径 #显示内容不包含字符串的文件名
find . -path './cache' -prune -o -name "*.php" -exec grep -l
"date_cache[$format]['lang']" {} \; #显示当前目录下不包含 cache 目录的所有含有 “date_cache[$format]['lang']”字符串的 php 文件。
快速查找某个文件 
whereis filename
获得文件的后缀名 
echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'
去除文件的后缀名 
echo xxx.xxx.rmvb |sed 's/\(.*\)\..*$/\1/'
查看文件类型 
file filename
对比两个文件之间的差异 
diff file1 file2
让tail不停地读取最新的内容 
tail -10f /var/log/apache2/access.log  或者  tailf /var/log/apache2/access.log
查看文件中间的第五行到第 10 行的内容 
sed -n '5,10p' /var/log/apache2/access.log
查找关于 xxx 的命令 
apropos xxx
man -k xxx
通过 ssh 传输文件 
scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz"
#压缩传输
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #压缩传
输一个目录并解压 
把所有文件的后辍由 rm 改为 rmvb 
rename 's/.rm$/.rmvb/' * 把所有文件名中的大写改为小写 
rename 'tr/A-Z/a-z/' *
将当前目录下最近 30 天访问过的文件移动到上级 back 目录 
find . -type f -atime -30 -exec mv {} ../back \;
查找当前目录下最近30天访问过的文件打包备份 
find . -type f -atime -30 | xargs tar zcvpf backup.tar.gz
find . -type f -atime -30 -print -exec tar rvpf backup.tar {} \;
将当前目录下最近 2 小时到 8 小时之内的文件显示出来 
find . -mmin +120 -mmin -480 -exec more {} \;
删除修改时间在 30 天之前的所有文件 
find . -type f -mtime +30 -mtime -3600 -exec rm {} \;
删除创建时间在 30 天之前的所有文件 
find . -type f -ctime +30 -ctime -3600 -exec rm {} \;
查找 guest 用户的以 avi 或者 rm 结尾的文件并删除掉 
find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;
查找不以 java 和 xml 结尾,并 7 天没有使用的文件删除掉 
find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} \;
查找目录下所有有包含 abcd 文字的文本文件,并替换为 xyz 
grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意 grep 的一
个参数是大写的 i,一个参数是小写的 L
删除当前目录里面所有的 .svn 目录 
find . -name .svn -type d -exec rm -fr {} \;
删除当前目录所有以“~”结尾的临时文件 
find . -name "*~" -exec rm {} \;
显示系统服务器一小时以内的包含 xxxx 的所有邮件 
find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i grep -l xxxx '{}'
统计当前目录下所有 jpg 文件的尺寸 
find . -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
统计当前目录个数 
ls -l /usr/bin|grep ^d|wc -l
统计当前目录下占空间最大的前 10 名文件或目录 
du -sm * | sort -nr | head -10
备份当前系统到另外一个硬盘  
sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/*
--exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*
使用 ssh 方式同步远程数据到本地目录 
rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back
/backup
使用 ftp 方式同步远程数据到本地目录 
lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set
ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"
去掉文件中的^M #注意不要使用同样的文件名,会清空掉原文件
cat filename | tr -d "^M" > newfile; 或者 sed -e "s/^M//g" filename > newfile;
转换 Dos 文本文件到 Unix 文本文件 
tr -d '\15\32' < dosfile.txt > unixfile.txt #dos = >unix
awk '{ sub("\r$", ""); print }' dosfile.txt > unixfile.txt #dos = > unix
awk 'sub("$", "\r")' unixfile.txt > dosfile.txt #unix = > dos

统计

统计最常用的 10 条命令 
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " "
CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr |
nl | head -n10
统计每个单词的出现频率,并排序 
awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"\t"i}}' FILE_NAME | sort -rn
统计 80 端口的连接个数并按照从大到小排列 
netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r
–n

编辑器

vim 中删除技巧 
:%s/[Ctrl-v][Enter]//g 删除 DOS 方式的回车^M
:%s= *$== 删除行尾空白
:%!sort -u 删除重复行
:%s/^.{-}pdf/new.pdf/ 只是删除第一个 pdf
:%s/// 删除多行注释
:g/^$/d 删除所有空行 
:g!/^dd/d 删除不含字符串'dd'的行
:v/^dd/d 删除不含字符串'dd'的行
:g/str1/,/str2/d 删除所有第一个含 str1 到第一个含 str2 之间的行
:v/./.,/./-1join 压缩空行
:g/^$/,/./-j 压缩空行
ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。
d0 删至行首。
d$ 删至行尾。
ndd 删除当前行及其后 n-1 行。
x 或 X 删除一个字符。
Ctrl+u 删除输入方式下所输入的文本。
D 删除到行尾
x,y 删除与复制包含高亮区
dl 删除当前字符(与 x 命令功能相同)
d0 删除到某一行的开始位置
d^ 删除到某一行的第一个字符位置(不包括空格或 TAB 字符)
dw 删除到某个单词的结尾位置
d3w 删除到第三个单词的结尾位置
db 删除到某个单词的开始位置
dW 删除到某个以空格作为分隔符的单词的结尾位置
dB 删除到某个以空格作为分隔符的单词的开始位置
d7B 删除到前面 7 个以空格作为分隔符的单词的开始位置 d) 删除到某个语句的结尾位置
d4) 删除到第四个语句的结尾位置 d( 删除到某个语句的开始位置 d) 删除到某个段落的结尾位置
d{ 删除到某个段落的开始位置
d7{ 删除到当前段落起始位置之前的第 7 个段落位置
dd 删除当前行
d/text 删除从文本中出现“text”中所指定字样的位置,一直向前直到下一个该字样所出
现的位置(但不包括该字样)之间的内容
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
dtc 删除当前行直到下一个字符“c”所出现位置之间的内容
D 删除到某一行的结尾
d$ 删除到某一行的结尾
5dd 删除从当前行所开始的 5 行内容
dL 删除直到屏幕上最后一行的内容
dH 删除直到屏幕上第一行的内容
dG 删除直到工作缓存区结尾的内容
d1G 删除直到工作缓存区开始的内容

编译和打包

安装通用编译环境 
sudo apt-get install build-essential
通用的编译安装步骤 
./configure && make && sudo make install
如何编译安装软件 kate 
sudo apt-get install apt-build
sudo apt-build install kate
获得源代码包 
sudo apt-get source mysql-server
解压缩还原源代码包 
dpkg-source -x mysql-dfsg-5.1_5.1.30-1.dsc
安装编译打包环境 
sudo apt-get build-dep mysql-server
重新编译并打包 Debian 化的源码 
dpkg-buildpackage -rfakeroot
获得源码并重新打包 
apt-get source php5-cgi 
#或手工下载源码后使用 dpkg-source -x php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解开源码
sudo apt-get build-dep php5-cgi
cd php5-5.2.6.dfsg.1
dpkg-buildpackage -rfakeroot -uc -b
给源代码打补丁 
patch -p0 < mysql.patch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值