转载请表明出处: http://blog.youkuaiyun.com/jiangsq12345/archive/2010/12/29/6105629.aspx
先列几个基本的:
s : /* 列出当前文件夹下所有文件(不包括隐藏文件*/
cd [文件夹] : /*改变当前路径*/
pwd : /*打印当前路径*/
rm [文件]: /*删除文件*/
touch [文件]: /*新建一个文件*/
mv [文件旧路径] [文件新路径]: /*剪切文件到新路径(也可用于文件重命名)*/
cp [文件原路径] [复制的文件路径]:/*复制文件到其他路径*/
mkdir [文件夹]:/*新建一个文件夹*/
rmdir [文件夹]: /*删除一个文件夹*/
cat [文件] :/*打印文件所有内容*/
less [文件]: /*类似cat,但是一次只打印一页*/
more [文件]:/*进入浏览模式*/
ps : /*查看当前进程, 常用 ps -A 或者 ps -aux 查看所有进程*/
kill -9 [进程ID]: /*杀死某个进程*/
列下Linux下特殊符合:
. 当前文件夹
.. 父文件夹
~ 当前用户的home文件夹
* 可以代替任意个数字符(除了.)
? 可以代替一个字符(除.)
1 chmod 更改文件夹或者文件的权限
# chmod [权限] [file]
一般一个文件可以对不同的3个群组(所有者,某一指定群组,其他群组)定义不同权限, 用ls -l[文件]查看. 所有在[权限]处是有3为数字组成
而对每个组都有三种操作类型,即读R,写W,运行X,分别对应 4,2,1
也就是说如果想要一个文件只读,则在权限中代入4, 只写是2,如果读写就是6,所以最大权限是7(读写运行都包括)
chmod 777 [file]来开启一个文件的所有权限
2apt 包管理器的使用
寻找可用的安装包
# apt-cache search [关键字] 在软件源下查找并输出具有关键字的所有软件包
查询pkgs包的依赖包
# apt-cache showpkg [pkgs] 打印某软件包所依赖的其他软件包
安装pkgs包
# apt-get install [pkgs] 安装指定的单个软件包
# apt-get build-dep [pkgs] 自动安装指定及其所依赖的所有包 (当缺少软件包是很适合)
卸载包
# apt-get remove [pkgs]
# apt-get purger [pkgs] /*同时删除该pkgs的配置文件*/
更新
#apt-get upgrade 对电脑中已安装所有软件包升级(如果存在新版本)
# apt-get update 更新并整理软件源下所提供的软件包
还有类似的dpkg debian包管理工具
3. jobs 管理终端任务命令
#jobs: 打印该终端的所有任务
#fg [任务id]: 将该任务转为前台 (我们将失去对该终端控制权)
#% [任务id]: 唤醒该任务
#bg [任务id]: 将该任务转为后台 (我们仍然有对终端的控制权)
#[命令] & :在后台运行该命令(要有空格)
ctrl-z :刮起当前任务, 可用 %唤醒
ctrl-c :杀死当前任务
4.终端已执行命令的记录操作
#history 打印所有终端已执行的命令
#!! 重新再执行最后一条命令
#![编号] 重新再执行编号的那条命令
#![字符串] 重新再执行由字符串开头的最后一条命令
ctrl+R 用来查找已执行过的命令
ctrl+P 查看上条命令,相对于方向键上
5netstat 查看进程占用端口命令
#netstat -tlnp
6route 添加,删除路由 链条
# sudo route add default gw 10.0.19.254 添加默认路由
# sudo route add -netX.X.X.Xnetmask255.255.255.0gwX.X.X.X 添加一条路由链条
# sudo route del XXXX 删除一条路由链条
7. diff 比较两个文件。
# diff <file1> <file2>
或者 cmp
# cmp [-clsv] [-i <字符数目>] [--help] [第一个文件] [第二个文件]
8.finger 打印 用户信息
# finger [user]
9.id查看用户的UID和GID等信息
# id [user]
10.Passwd设置密码,Ubuntu安装后root是没有默认的密码的,
#sudo passwd root
11.NMap(Network Mapper)是Linux下的网络扫描和嗅探工具包, 可以用来扫描主机上开启的所有端口
#nmap [IP]
IP可以是对方的,如果本机就用 localhost
12. telinit改变linux的运行状态
# telinit [系统运行等级]
等级可以是 0 1 2 3 4 5 6 等
- 0 : 关机
- 1 : 单用户(维修模式
- 2 à 5 : 视操作系统
2: 可以是多用户模式但无任何服务
3: 可以是多用户模式且开启服务
4, 5:可能启用图形界面 - 6 : 重启 telinit 等效于 reboot
13. shutdown立即关机, reboot重启,
# shutdown -h now
# reboot
14. tunctl /*创建一个虚拟网卡*/
#tunctl -u root /*avoir une interface*/
#ifconfig tap0 10.0.XXX.1 netmask 255.255.255.0
15. chgrp 更改文件夹或者文件的所在群组 (属组)
#chgrp [群组] [文件/夹]
16. chown 更改文件夹或者文件的所有者(属主)
#chown [-Rv][用户] [文件/夹]
17. mount 挂载系统文件
mount [option] [类型] [要被挂载的目的dev文件][挂载的文件夹]
/etc/fstab:系统启动时自动加载文件的配置
*挂载window的 fat 分区
mount -t vfat [/dev/had1][挂载文件夹]
* 用 ntfs-3g 来加载ntfs分区
mount -t ntfs-3g [ /dev/hda1] [挂载文件夹]
* 挂载 ISO 映象文件
mount [ISO映像文件][挂载文件夹] -t iso9660 -o loop
取消加载
umount
查看所有加载信息
mount
如果不知道系统文件,介绍个小窍门(以Usb为例): 文件肯定在/dev文件夹下,一般以sdb开头
所以可以先ls /dev/sdb*列出所有可能文件,然后用fdisk -l [文件名]来查看文件属性,根据给出的信息很容易就能辨认那个自己想要的,然后用mount 加载
18. 几个硬盘管理命令
* df 查看分区存储情况 #df
* du 报告磁盘空间使用情况 #du [文件]
* dump ext2/3 系统文件的备份 #dump 0f [目的文件夹] [要备份的系统文件]具体请查考http://os.51cto.com/art/201005/200285_1.htm
19. 系统管理内核模块
lsmod: 查看内核所有模块
modinfo [模块]: 查看某个模块信息
modprobe: 挂载新模块及新模块相依赖的模块
#modprobe -l : 列出所有已加载或未加载的模块
#modprobe [模块] : 加载该模块,能够自动处理 module 载入的相依问题
#modprobe -r [卸载]:卸载模块
rmmod : 卸载模块
depmod 创建模块依赖关系的列表
insmod 挂载模块,但是不会处理相依的模块,建议用 modprobe
20.mknod - 建立块专用或字符专用文件
mknod [options] name {bc} major minor
(option:-p:FIFO型 ; -c:字符 ; -b: 块 )
例子:
#mknod /dev/net/tun c 10 200
21. nslookup(Name System Look Up) 用来跟你所在的DNS服务器交流,可以是查看某个域名的信息等
#nslookup [域名]
打印该域名对应的信息(IP,端口等)
22. gnome-session-save 用来保存当前系统会话下正在运行的应用程序的快照,并在下次启动时加载恢复该会话
#gnome-session-save [--logout] [--force-logout] [--logout-dialog] [--shutdown-dialog] [--gui] [--kill [--silent]]
23.WC 用来打印文件的大小(行数,字符,字节等模式)
#wc [Option] [文件]
-c, --bytes
打印字节数
-m, --chars
打印字符数
-l, --lines
打印行数
-L, --max-line-length
打印最长行的长度
-w, --words
打印单词数
24.last显示目前和过去登录系统的用户相关信息
#last
25.who 命令显示当前登录的所有用户信息。Who的缺省输出包括用户名、终端类型、登录日期及远程主机
#who
26.uname 查看linux的内核信息版本
#uname -a
27.dmesg显示开机信息日志(适用于系统出问题时)
文件为: /var/log/dmesg
var/log/messages可能保存着被dmesg忽略的系统信息
#dmesg
28. im-switch 为X windows设定输入方式
#im-switch -s [输入法的引擎]
常见输入法的引擎有:ibus, Fcitx 或scim
29.tar用于归档、压缩等
#tar [options] 目标路径 [路径名pathname ... ]
-cvf 压缩文件或目录 #tar -cvf [生成文件名] [被压缩的文件]
-xvf 解压缩文件或目录 #tar -xvf [目标文件]
-zcvf 压缩文件或,格式tar.gz,tgz #tar -zcvf [生成文件名] [被压缩的文件]
-zxvf 解压缩文件或,格式tar.gz,tgz #tar -zxvf [目标文件]
30.chkconfig 命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接,重启后生效
语法:
chkconfig --list [name] 显示所有系统服务(包括未运行的)
chkconfig --add name 添加一个服务
chkconfig --del name 删除一个服务
chkconfig [--level levels] name <on|off|reset>更改一个服务相对于系统运行等级的运行模式(开启,关闭等)
例如想关闭 任何系统运行等级下的Apache服务,可以用
#chkconfig --level 123456 apache off
系统重启后生效,如果想立即关闭,请用
#sudo /etc/init.d/apache stop
31.nohup不挂断地运行命令不会从任何tty输出。
语法:nohup [命令] [ Arg ... ] [ & ]
描 述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示"and"的符号)到命令的尾部。
32. whois 查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期等)
#whois [域名]
33.debugfs 用来恢复用rm命令删除的文件
#debugfs [device]
具体可参考: http://blog.youkuaiyun.com/jiangsq12345/archive/2011/03/10/6235715.aspx
34.find命令搜索系统中的文件
# find [要搜索的根目录] -name [file]
35. traceroute 列出到某个IP所经过的所有路由器
# traceroute [IP或域名]
36. 为系统添加额外的交换SWAP空间(通过创建交换空间文件)
# dd if=/dev/zero of=/.swap bs=1024 count=100000
/*if: 输入的文件(保持不变) of:需要创建的交换空间文件路径 bs: 每个block的大小(字 节),1024=1Ko count: block的数量,所以真实大小为 bsXcount 字节 ,此例为1G的交换空间文件*/
# mkswap /.swap /*格式化文件*/
# swapon /.swap /* 启用交换空间文件*/
# more /proc/swaps /*查看交换空间是否已经成功启用*/
-------------------------------------------------------
#swapoff /.swap /*停用交换空间*/
如果想以后重启后自动挂载,则编辑/etc/rc.local(不同系统稍微有点差异,记得最后要有exit 0,否则可能无法自动加载), 增加一行:swapon /.swap 即可。
37. update-rc.d 是用来更新系统启动项的脚本(类似于chkconfig)。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录
# sudo update-rc.d 服务名 defaults /*添加服务*/
# sudo update-rc.d 服务名 remove /*删除服务*/
# update-rc.d <basename> start|stop <order> <runlevels> /* 按指定顺序、在指定运行级别中启动或关闭*/
实例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这3个运行级别中,第20个关闭apachectl。这是合并起来的写法,注意它有2个点号.
38. su 命令:su 命令将用户凭证更改为 root 用户凭证或由Name 参数指定的用户,然后开始一个新的会话。用户名可能包含 DCE 单元规范。这里强调su 后有无 - 是完全不同的性质,这里举2个例子来说明
# su root -c "pwd" /*输出当前普通用户的路径 */
# su - root -c "pwd" /*输出root用户的路径,一般为 /root */
有-,就会加载root用户的所有bash和环境变量,此时相对于是root超级用户执行该命令
无-,仅仅是借用root用户的名义来运行这个命令(所有环境变量等保持不变)
39. iptables 命令:Linux下一个强大的防火墙工具
举例:我们在笔记本电脑上建立一个Ad-Hoc无线网时,还没有设置IP转发,数据从手机到达电脑后,就被丢弃了,所以不能访问网络。因此还有最后一步:在
笔记本电脑上设置IP转发,以root身份执行以下几个命令即可:
# echo 1 > /proc/sys/net/ipv4/ip_forward /*开启模式*/
# iptables -F /*清除iptables中所有链条*/
# iptables -P INPUT ACCEPT /*接受所有进入主机的数据包*/
# iptables -P FORWARD ACCEPT /*接受所有主机内转发的数据包*/
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE /*在POSTROUTING链条末新添加一条,将所有源地址隐藏转换发送到eth0网卡*/
# iptables -t nat -L /*查看nat表的所有规则*/
/*POSTROUTING 这个链就是用来做SNAT(源地址转换)的,当然也包括Masquerade(伪装)*/
Table. Commands
Command | -A, --append |
Example | iptables -A INPUT ... |
Explanation | 在所选择的链末添加规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条规则会和所有可用的地址结合。 |
Command | -D, --delete |
Example | iptables -D INPUT --dport 80 -j DROP或iptables -D INPUT 1 |
Explanation | 从所选链中删除规则。有两种方法指定要删除的规则:一是把规则完完整整地写出来,再就是指定规则在所选链中的序号(每条链的规则都各自从1被编号)。 |
Command | -R, --replace |
Example | iptables -R INPUT 1 -s 192.168.0.1 -j DROP |
Explanation | 在所选中的链里指定的行上(每条链的规则都各自从1被编号)替换规则。它主要的用处是试验不同的规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条command会失败。 |
Command | -I, --insert |
Example | iptables -I INPUT 1 --dport 80 -j ACCEPT |
Explanation | 根据给出的规则序号向所选链中插入规则。如果序号为1,规则会被插入链的头部,其实默认序号就是1。 |
Command | -L, --list |
Example | iptables -L INPUT |
Explanation | 显示所选链的所有规则。如果没有指定链,则显示指定表中的所有链。如果什么都没有指定,就显示默认表所有的链。精确输出受其它参数影响,如-n和-v等参数,下面会介绍。 |
Command | -F, --flush |
Example | iptables -F INPUT |
Explanation | 清空所选的链。如果没有指定链,则清空指定表中的所有链。如果什么都没有指定,就清空默认表所有的链。当然,也可以一条一条地删,但用这个command会快些。 |
Command | -Z, --zero |
Example | iptables -Z INPUT |
Explanation | 把指定链(如未指定,则认为是所有链)的所有计数器归零。 |
Command | -N, --new-chain |
Example | iptables -N allowed |
Explanation | 根据用户指定的名字建立新的链。上面的例子建立了一个名为allowed的链。注意,所用的名字不能和已有的链、target同名。 |
Command | -X, --delete-chain |
Example | iptables -X allowed |
Explanation | 删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将会删除默认表所有非内建的链。 |
Command | -P, --policy |
Example | iptables -P INPUT DROP |
Explanation | 为链设置默认的target(可用的是DROP和ACCEPT,如果还有其它的可用,请告诉我),这个target称作策略。所有不符合规则的包都被强制使用这个策略。只有内建的链才可以使用规则。但内建的链和用户自定义链都不能被作为策略使用,也就是说不能象这样使用:iptables -P INPUT allowed(或者是内建的链)。 |
Command | -E, --rename-chain |
Example | iptables -E allowed disallowed |
Explanation | 对自定义的链进行重命名,原来的名字在前,新名字在后。如上,就是把allowed改为disallowed。这仅仅是改变链的名字,对整个表的结构、工作没有任何影响。 |
在使用iptables时,如果必须的参数没有输入就按了回车,那么它就会给出一些提示信息:告诉你需要哪些参数等等。iptables的选项-v用来显示iptables的版本,-h给出语法的简短说明。。下面将要介绍的就是部分选项,还有它们的作用。
Table. Options
Option(选项) | -v, --verbose(详细的) |
可用此选项的命令 | --list,--append,--insert,--delete,--replace |
Explanation(说明) | 这个选项使输出详细化,常与--list连用。与--list连用时,输出中包括网络接口的地址、规则的选项、TOS掩码、字节和包计数器,其中计数器是以K、M、G(这里用的是10的幂而不是2的幂哦)为单位的。如果想知道到底有多少个包、多少字节,还要用到选项-x,下面会介绍。如果-v和--append、--insert、--delete或--replace连用,iptables会输出详细的信息告诉你规则是如何被解释的、是否正确地插入等等。 |
Option | -x, --exact(精确的) |
Commands used with | --list |
Explanation | 使--list输出中的计数器显示准确的数值,而不用K、M、G等估值。注意此选项只能和--list连用。 |
Option | -n, --numeric(数值) |
Commands used with | --list |
Explanation | 使输出中的IP地址和端口以数值的形式显示,而不是默认的名字,比如主机名、网络名、程序名等。注意此选项也只能和--list连用。 |
Option | --line-numbers |
Commands used with | --list |
Explanation | 又是一个只能和--list连用的选项,作用是显示出每条规则在相应链中的序号。这样你可以知道序号了,这对插入新规则很有用哦。 |
Option | -c, --set-counters |
Commands used with | --insert,--append,--replace |
Explanation | 在创建或更改规则时设置计数器,语法如下:--set-counters 20 4000,意思是让内核把包计数器设为20,把字节计数器设为4000。 |
Option | --modprobe |
Commands used with | All |
Explanation | 此选项告诉iptables探测并装载要使用的模块。这是非常有用的一个选项,万一modprobe命令不在搜索路径中,就要用到了。有了这个选项,在装载模块时,即使有一个需要用到的模块没装载上,iptables也知道要去搜索。 |
40. man 查看某个命令的具体使用情况,如
> man ls
来查看ls命令的使用情况,包括option、参数等
其中在man中有如下的快捷键:
光标移动操作:
e ^E j ^N CR * 前进一行(或N行)
y ^Y k ^K ^P * 后退一行(或N行)
f ^F ^V SPACE * 前进一个窗口(或N行)
b ^B ESC-v * 后退一个窗口(或N行)
z * 前进一个窗口(将窗口设置到N)
w * 后退一个窗口(将窗口设置到N)
ESC-SPACE * 前进一个窗口,在文件末尾不停止
d ^D * 前进半个窗口(将这半个窗口设置到N)
u ^U * 后退半个窗口(将这半个窗口设置到N)
ESC-) RightArrow * 向左半个屏幕宽(或N个位置)
ESC-( LeftArrow * 向右半个屏幕宽(或N个位置)
F 一直前进,像"tail -f"一样
移动操作基本与vi一样的。
查找操作:
/pattern * 向前查找包含pattern的行.
?pattern * 向后查找包含pattern的行.
n * 查找下一个pattern行.
N * 查找上一个pattern行.
ESC-n * 同n.
ESC-N * 同N
ESC-u 取消所有搜索的高亮显示
调动操作:
g < ESC-< * 跳转到文件第一行
G > ESC-> * 跳转到文件最后一行
p % * 跳转到文件最开始
其它操作:
:n * 打开跳转到下一个文件
:p * 打开跳转到上一个文件
:x * 跳转到第一个打开的文件
h H 显示帮助
q :q Q :Q ZZ 退出当前打开文件
less可以打开多个文件,在多个文件操作中,可以使用这些命令。如man -a passwd 实际会查到多个手册,都会有less打开。可以通过这类命令实现打开与关闭。
===========================
参考链接:
Iptables的具体指南: http://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html#DETAILEDEXPLANATIONS
百度百科 http://baike.baidu.com/view/2158185.html
交换空间文件创建: http://www.linuxdiyf.com/bbs/viewthread.php?tid=24668
update-rc.d: http://www.linuxidc.com/Linux/2010-12/30886.htm
http://blog.youkuaiyun.com/lizzydarcymsp/archive/2010/06/03/5644598.aspx