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

ubuntu里一些不熟的命令相关推荐

  1. 我一不小心把ubuntu里的ps这样的命令删掉了,应该怎么重装呢

    sudo apt-get --reinstall install procps  

  2. ubuntu 搜索文件方法(find命令)

    ubuntu 搜索文件方法(find命令) 分类: linux ubuntu 2012-11-05 22:19 8998人阅读 评论(0) 收藏 举报 通用格式:find pathname -opti ...

  3. Ubuntu学习(应用集合、命令行以及遇到的问题)

    2019独角兽企业重金招聘Python工程师标准>>> 一.应用集合 应用的安装我单独写了一篇文章,见 https://my.oschina.net/u/3304023/blog/1 ...

  4. Ubuntu安装GVM-11并使用gvm-tools命令行方式通讯

    Ubuntu安装GVM-11并使用gvm-tools命令行方式通讯 很感谢这位大哥提供的帮助:[https://www.cnblogs.com/blueyunchao0618/p/11475339.h ...

  5. Ubuntu Kylin操作系统介绍及常用命令的使用

    介绍 知名Linux操作系统发行版Ubuntu发布了中国定制版的操作系统 -- UbuntuKylin (优麒麟系统).这是 Canonical 公司与我国工信部 CCN 开源创新联合实验室开发的. ...

  6. Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

    Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...

  7. Ubuntu (Linux) 系统 find 命令详解

    Ubuntu (Linux) 系统 find 命令详解 在Ubuntu (Linux)系统的终端上,虽然没有像 windows 上那样简介易用的图形界面 搜索工具,但只要你使用足够熟练, 有一个强大命 ...

  8. Ubuntu 里的Spyder不能切换中文输入

    Ubuntu 里的Spyder不能切换中文输入 链接 posted on 2019-02-20 11:38 luoganttcc 阅读(...) 评论(...) 编辑 收藏

  9. ubuntu下安装、卸载软件命令

    http://www.2cto.com/os/201210/159589.html ubuntu下安装.卸载软件命令 安装: apt-get install name 卸载: apt-get remo ...

最新文章

  1. 【Idea无法打开】Idea.bat可以正常打开,双击快捷方式无法打开解决办法
  2. 树的特征能否复用问题
  3. 一个被遗忘的ccflow工作流引擎自定义表单开发模式
  4. 动态调用类 java_Java动态调用类中方法
  5. V210调整根分区大小
  6. MyBatis-Plus_快速入门0222
  7. java 监听request_ServletRequest 监听器
  8. Spring源码分析-如何获取Bean对象
  9. Hibernate之Session merge与update方法
  10. 二叉树的BFS及DFS
  11. 撇去 Windows 的微软,又掉进了贪污贿赂的深坑
  12. 2018-01-17
  13. java true false 异或_三元运算符21?true:false;
  14. 矩阵运算中的trick
  15. Android NFC 标签读写读取快速开发教程 ( 整理来自 https://blog.csdn.net/wolfking0608/article/details/72675180 )
  16. java jre 配置_JRE的安装及环境变量配置
  17. matlab读写xlsx文件
  18. Windows系统封装(四)正式封装和测试。
  19. 怎样装系统(附图文教程)
  20. 华为手机虚拟键盘遮挡菜单

热门文章

  1. 70后20年退休后可以领到多少养老金
  2. 今日头条极速版使用教程
  3. Arduino STM32制作教程
  4. GLSL常见函数[转]
  5. ps眼睫毛笔刷的使用
  6. MySQL事务浅析|由浅入深
  7. rust自我解脱_深夜的阴谋
  8. 中国地铁数据库表 (MySQL)
  9. 苹果手机网速慢_为什么手机信号满格,网速还是很差?
  10. nodejs express mysql实现多表查询