1,常用:
UbuntuSkills
#uname -a
#lshw 察看硬件信息(要安装)
#cat /etc/issue
#cat /proc/cpuinfo
#lsb_release -a 查看Ubuntu版本
#du -hs /home/* | sort -nr 察看目录大小 -s 仅显示总计 -h 以K、M、G为单位
#find /somewhere/ -name some.file找出文件
#find . -name some.file当前目录下找出文件 More…
#find . -name \* -type f -print | xargs grep “some text” \*所有文件, -type f 普通文件 d 目录
#sof | grep deleted 找出已经被打开,但被删除的文件
#free -m 察看内存使用
#df 察看硬盘使用
#ls -d */ | wc -l 察看当前目录下子目录的个数
#lastlog last 察看最后登录的用户
#export PATH=$PATH:/usr/mysql/bin
#chmod ug+w,o-x file u=属主,g=属组,o=其它用户
apache2ctl -l 查看apache工作模式
pgrep apache2|wc -l 查看当前连接数
ps aux|grep -v grep|awk ‘/apache2/{sum+=$6;n++};END{print sum/n}’ 计算httpd占用内存的平均数
dpkg -l | grep ‘^ii’ 查看已经安装了的软件
find ./ -name “*.php” | xargs -n 1 sed -i -e ‘s/aaa/bbb/g’ 把aaa换成bbb
2,查看SuSE版本:# cat /etc/SuSE-release
3,查看进程,资源 top
4,kill进程
1
|
|
常与ps连用
1
|
|
5,nohup
我一般用ssh登录linux服务器,如果要用服务器下载某个文件,我就一直要使终端窗口保持打开状态,这是不合理的。好在用nohup帮忙,它可以让程序在后台运行,就算你关掉终端窗口也没关系。例如,我想下载MiCTeX的字体:
1
|
|
这个命令运行后,屏幕输出:
1
|
|
鼠标这时一动不动,直到文件下载完毕前你再也不能输出任何命令了。不过在关掉这个窗口后,你可以观察到MiCTeX-GBKfonts.exe的文件大小一直在增加。
如果在命令最后加上&,就可以让这个下载命令彻底在后台运行,但我实验的结果表明,加了&以后,如果关掉终端,进程也同时关掉了:
1
|
|
6,screen
我其实是把文件下载到 /home/zhang/temp/ 里面,当我N久以后再联上服务器,想看看文件下载情况怎样,那又要 cd 老半天,这时候 screen 就是好帮手了。
顾名思义 screen 就是屏幕,这个命令可以让你有N个屏幕。那我先建一个名字叫做zhang的Screen,用来下载文件:
1 2 3 |
|
然后按 Ctrl + a 再按 d。这时系统提示 : [detached] 表示离开这个屏幕了。
我再建一个名字叫做zhangvim的Screen,用来编一个vi文档:
1 2 |
|
编了几行字,我又想看看文件下载得如何了(我是个急性子),那像前面一样,按 Ctrl + a 再按 d。这时系统提示 : [detached] 离开zhangvim这个屏幕。接下来连上屏幕zhang:
1
|
|
这时,你看到的屏幕和你原来离开zhang时一模一样。让我很开心的是,就算我把断掉ssh,再连上Server的时候,还能找回这个屏幕。
如果你有兴趣,你可以开n个Screen,还可以在一个Screen里面再嵌套一个。如果多到你都不记得要连哪个了,那加个参数看一看:
1 2 3 4 5 6 7 8 |
|
是不是有点太多了,有的联着的,有的是断开的,但是没关系,可以把它们一个一个关掉:
如果是(Detached),用这个命令:screen -r zhang
如果是(Attached),用这个命令:screen -x zhangvim
连上后,输入exit就可退出这个Screen。系统提示:[screen is terminating]
好了,足够清楚也足够啰嗦了。如果还想进阶请自己查man。
7,wget
虽然讯雷是好样的,但我还是希望介绍一位新朋友给大家:wget
我想下载MiCTeX目录下的所有文件,那个服务器还限线程,我又没那么多时间开着台式机拖文件,那ssh连上服务器,用wget是再好不过了。把上面的命令也用上:)
1 2 3 |
|
按 Ctrl + a 再按 d,离开这个屏幕,再把ssh断开,睡一觉醒来,那些文件就会乖乖地躺在我的文件夹里了。
稍微解释一下wget参数:
1
|
|
1
-r
1
-nH
1
--cut-dirs=NUMBER
这样一来,下载的文件都会放在 /home/zhang/temp 文件夹里面。如果没有参数
1
|
|
再来个例子:
1
|
|
简单解释:
用户:
1
|
|
密码:
1
|
|
非PASV模式:
1
|
|
wget的man会很长,大家还是自己研究吧,这样印象会深点。
8,ps
使用方式:
1
|
|
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
9,md5sum
输入文件的md5码:
1 2 |
|
注:>和>>的区别在于:
>只产生当前文件的md5码 file.md5,
>>则将输出的md5码附加到file.md5文件的后面。
也可以把多个文件的md5码输出到一个md5文件中,这要使用通配符*,比如某目录下有几个iso文件,要把这几个iso文件的摘要输出到iso.md5文件中,命令如下:
1
|
|
使用md5报文摘要验证文件,方法有二:
(1)把文件file.iso和file.md5文件放在同一个目录下,然后用如下命令进行验证:md5sum -c file.md5然后如果验证成功,则会输出file.iso:OK
(2)比如下载了文件file,然后运行下面的命令:md5sum file.iso
命令会输出一个md5码,然后把这个md5码直接与file.md5中的内容比较,如果一样,就说明验证正确。
另外,在linux下还有一个md5验证的图形界面,http://www.md5summer.org
10,删除巨量文件
1
|
|
11,Ubuntu的软件安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
12,Ubuntu改root密码
1
|
|
13,查看Linux文件夹大小
统计总数大小
1 2 |
|
14,查找文件
1 2 |
|
更多…
15,traceroute
windows下tracert的对应命令
16,批量改名
把 wort* 文件加一个前缀 abc_
1 2 3 4 |
|
16,排错
Unable to open env file: /etc/default/locale: No such file or directory
请运行
1
|
|
17,硬盘测速
1 2 |
|
这个命令还可以把硬盘休眠
1
|
|
17,SSH建立代理
1
|
|
q : be very quite, we are acting only as a tunnel.
T : Do not allocate a pseudo tty, we are only acting a tunnel.
f : move the ssh process to background, as we don’t want to interact with this ssh session directly.
N : Do not execute remote command.
n : redirect standard input to /dev/null.
18,ps查找进程
1
|
|
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
19,Debian/Ubuntu下如何查看已经安装了哪些软件包?
如果安装了Synaptic软件包管理器直接打开管理器就可以看见(不过不是默认安装的)
apt-get也是用dpkg的包装,直接使用dpkg -l就可以查看已经安装的软件包
1
|
|
对于server版,推荐使用aptitude来查看、安装、删除deb包。
1
|
|
然后执行
1
|
|
进入管理界面即可
已安装的deb包默认放在
/var/cache/apt/archives/下
20,用户&用户组
1 2 3 |
|
查看所有用户
1
|
|
第一字段:用户名(也被称为登录名);
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID ;
第四字段:GID;
第五字段:用户名全称,这是可选的,可以不设置;
第六字段:用户的家目录所在位置;
第七字段:用户所用SHELL 的类型;
例:
neten:x:1001:1001:neten,,,:/home/neten:/bin/bash
查看用户组
1
|
|
第一字段:用户组名称;
第二字段:用户组密码;
第三字段:GID
第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
例:
neten:x:1001:neten
usermod:
-g initial_group 改变用户的默认用户组。
-G group,[…] 把用户规入很多组, 组名用逗号分开。如果用户现在的用户组不再此列,则将用户由该用户组中移除。
neten默认组为neten.
-aG append group,[…] 不管原来用户属于多少个组, 再加上一些组.
例:
1, 默认neten属于neten组:
1 2 |
|
2, 把用户加入cdrom组:
1 2 3 |
|
3, 把用户加入www-data组:
1 2 3 |
|
4, 再把用户加入mysql组:
1 2 3 |
|
5, 上面三个命令加起来可以用下面一个命令实现:
1
|
|
6, 也可以用下面两条命令实现:
1 2 |
|
7, 要回到原始用户组:
1
|
|
8, 我现在把neten的原始组换成www-data, 原来的原始组地位就下降了:
1 2 3 |
|
9, 我再加入一个组:
1 2 3 |
|
10, 变回上一步的样子:
1 2 3 |
|
11, 如果要把neten变回原始组:
1 2 3 |
|
这一步和第8步不同, neten本来就是原始组, 现在变回去的话, 那www-data就不会再附加在后面了.
顺便记录一下, 第一个默认sudo用户的id
1
|
|
21,mount新磁盘
首先找到新磁盘:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
然后mount它
1
|
|
22,查看硬件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
23,mount ftp & iso
1 2 3 |
|
1
|
|