liunx下的一些常用命令

我记性不好,忘性 >> 记性,所以自己理的有一些小 tip,拿出来大家 share 一下:)
有的是写上去了,但是还没填的,就请各位大哥给小弟填一下啦...

代码:
1、关于 sysctl:
其实 /etc/sysctl.conf 对应的是 /proc/sys/ 目录...
例如要修改 /proc/sys/net/ipv4/ip_default_ttl 的话,就修改 /etc/sysctl.conf 文件如下...
添加一行为:
net.ipv4.ip_default_ttl=255, 也就是把文件夹变成小数点就可以啦
然后执行一次
#sysctl -p
就可以生效啦。
2、关于 arp 协议:
关于 arp 命令,注意其中的 Flags, 如果是 C, 表示是动态的,但是如果使用 arp -s 来绑定的话则是显示 M,是静态
所以后边每个侦都需要加入填充字符以达到以太网的最小长度要求 60 字节。
大多数的 bsd 实现把完成 tcp 连接请求的时间限制设置为 75 秒。
1byte=8bit
3、关于 tcpdump
想输出点分十进制:tcpdump -n ***
想输出 mac 地址:tcpdump -e ***
抓到目标为 A 的包:tcpdump dst A
问题:如何使用 Tcpdump 显示抓到的包的长度, 因为以太网包的最小长度为 60,用 packetyzer 抓到 48
4、关于 vim 的使用:
替换当前行的某个单词    :s/old/new/g
替换全文所有符合的单词  :%s/old/new/g
替换全文所有符合的单词并让用户确认: :%s/old/new/gc
5、如何使用 date 修改系统时间:
$ date 1124170004
此命令将日期设置为 2004 年 (04) 11 月 24 日 (1124) 17 时 (1700)。
#hwclock 写入 bios
6、Linux 的路由重定向
/proc/sys/net/ipv4/conf/uall/send_redirects
/proc/sys/net/ipv4/conf/default/send_redirects
/proc/sys/net/ipv4/conf/eth0/send_redirects
7、查看 Linux 分区
#fdisk -l
或者 #parted
(parted)print
这样可以看到各个分区的类型及大小,不过这两个看到的结果并非相同
#cat /proc/partitions
查看分区卷标:
#e2label /dev/hdXn
8、find 命令常见使用方法:
查找名字为 conf 的目录
#find / 目录  -type  d -name conf
注意 type 可能为 b,c,d,l 等...
查找文件权限为 755 的文件
#find / 目录 -perm 755 -print
如果用八进制,则可以用
#find / 目录 -perm -007 -print  (跟 chmod 里的表示方法相同)
查找文件属主为 kt 的文件
#find / 目录 -user kt -print
查找 group 为 kt 的文件
#find / 目录 -group kt -print
查找名字为 file 的文件
#find / 目录 -name file
查找大小为 0 的文件
#find / 目录 -size 0
忽略某个目录:
#find / 目录 -name "/ 目录名" -prune -o -print
查找属主帐户已经被删除的文件:
#find / 目录 -nouser -print
按更改时间查找文件
#find / 目录 -mtime -5 -print  单位是 5, 查找更改时间在 5 日以内的文件
查找更改时间在 3 日以内的文件
#find / 目录 -mtime +3 -print
查找更改时间比 file1 新但比 file2 旧的文件
#find / 目录 file1 ! -newer file2 -exec ls -l {} \;
不仅查询根目录,而且查询子目录
#find / 目录 -name file -depth -print
只在当前文件系统内部查询,而不进入其他文件系统
#find / 目录 -name file -mount -print
用 exec 对查找出的文件进行操作
#find / 目录 -type f -exec ls -l {} \;     //-exec ls -l {} \; 则表示执行“ls -l”的操作.
用 exec 安全模式,在删除前有提示
#find / 目录 -name "*.log" -mtime +5 -ok rm {} \;   // 这样在删除文件前会先提示
根据 inode 号来取得硬链接
#find / 目录 -inum inode 号
对 find 找出的文件执行操作可以使用 -exec 执行指令 {} \; 也可以使用 | xargs 指令
9、如何修改 Linux 网卡的 mtu
 (1) ifconfig eth0 mtu 1400        (使用系统都带的 ifconfig)
 (2) ip link set eth0 mtu 1400     (使用系统都带的 ip)
10、修改系统时间
date -s “2003-04-14 cst”,cst 指时区,时间设定用 date -s 18:10
修改后执行 clock -w 写到 CMOS
11、以 Tomcat 用户来启动 tomcat
#su - tomcat -c "/usr/local/tomcat"
但是难道这样不需要输入密码吗?
12、如何查看当前运行级别 
#runlevel
或者
#who -r
13、修改主机名
主要是三个文件 (1)/etc/sysconfig/network-scripts/ifcfg-eth0 (2)/etc/hosts
(3)/etc/sysconfig/network
14、修改网卡 MAC 地址:
#ifconfig eth0 down
#ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
#ifconfig eth0 up
15、在 Linux 上释放所有 arp:
#arp -d -a
16、在 SCO 上 scosh 不能 telnet 到 Linux,要修改 TERM
#export TERM=ANSI
17、用 sysctl -a 查看 /proc/sys/ 下各个值
18、查询 22 端口正运行什么程序
#lsof -i :22
19、Linux 上添加路由
添加到某网段的路由:route add -net desIP rouIP dev eth0
添加到某 ip 的路由:  route add -host desIP rouIP dev eth0
20、使退出登陆后程序继续运行:
# disown
或者是
nohup command &
21、Linux 共有几种类型的文件:
d 目录。
l 符号链接 (指向另一个文件)。
s 套接字文件。
b 块设备文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件,或者更准确地说,不属于以上几种类型的文件。
22、针对文件的权限:
r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组 set-ID。
t 粘性位 *。
l 给文件加锁,使其他用户无法访问。
23、redhat 的版本如何判断
#cat /proc/version               (如何怎么修改使系统启动后就为默认的 Jintao Linux v2.0)
#cat /etc/redhat-release
#cat /etc/issue
24、使用 md5sum 来校验文件
#md5sum isofile > hashfile
#md5sum -c hashfile
25、查看硬盘的使用情况
#df -k  以 k 为单位
#df -m  以 m 为单位
#df -h  以人性化单位显示
26、查看目录的大小
#du -sh dirname
-s 仅仅显示总计
-h 显示人性化的信息
27、字符模式下设置环境变量
#export 变量名 = 变量值
28、关于.vimrc
29、关于 fstab
30、系统默认的 suid/sgid 程序
/usr/bin/passwd
如果不让用户自己有权限修改自己密码,可以把其 s 位去掉
/usr/sbin/userhelper
/usr/sbin/userisdnctl
/usr/sbin/usrnetctl
/sbin/pam_timestamp_check
/sbin/unix_chkpwd
/sbin/pwdb_chkpwd
31、关于中文处理
32、关于 grub
重新安装一次 grub
#grub-install /dev/hda1
33、关于 pam
/etc/pam.d
34、关于 TCP_WRAPPERS
这个跟 xinetd 有关系... 而现在一般使用 standalone 模式...
35、关于 dns 的查询使用办法
nslookup
host
dig
36、关于 ssh
scp
制造密钥
37、设置网卡为混杂模式
#ifconfig eth0 promisc
38、自动化任务  cron,at,batch
系统管理员通过 cron.deny 和 cron.allow 来禁止和允许用户拥有自己的 crontab 文件...
crontab 的格式:  分 时 日 月 星期 要运行的命令(注意使用的命令必须是绝对路径)
crontab -e 编辑
crontab -r 删除
crontab -u user 用某用户来执行
crontab -l 列出当前 crontab 内容
at 也通过 /etc/at.allow 和 at.deny 文件空子后哪些用户可以使用 at 命令,哪些不行
39、关于 ip 层的路由
路由器在查找路由表的时候,路由表有三种
1、特定主机 2、特定网络 3、默认路由
优先级依次递减,主机路由高于网络路由,网络路由高于默认路由,同时也是由掩码最大匹配来决定优先级
40、创建文件时即规定日期
#touch -t 11091531 file            //11.09 日 15:31 分
41、如何修改文件属性?
用 chattr
用 setfacl
例如修改文件的更新日期?
42、关于 if 语句的 test
EXPRESSION1 -a EXPRESSION2 两条语句都为 true
EXPRESSION1 -o EXPRESSION2 两条语句任意一条为 true
[-n] STRING                String 串非零
-z STRING                  串的长度为 0
STRING1 = STRING2          两个串相等
STRING1 != STRING2        两个串不相等
INTEGER1 -eq INTEGER2      两个整数相同                      equal
INTEGER1 -ge INTEGER2      INTEGER1 大于等于 INTEGER2          greater equal
INTEGER1 -gt INTEGER2      INTEGER1 大于 INTEGER2           greater than
INTEGER1 -le INTEGER2      INTEGER1 小于等于 INTEGER2          less equal
INTEGER1 -lt INTEGER2      INTEGER1 小于 INTEGER2              less than
INTEGER1 -ne INTEGER2      INTEGER1 不等于 INTEGER2         not equal
FILE1 -ef FILE2            file1 跟 file2 有同个设备和 inode 号   equal file 
FILE1 -nt FILE2            file1 比 file2 新                    newer than
FILE1 -ot FILE2            file1 比 file2 老           older than
-b file          file 存在也是块设备           block
-c file          file 存在且是字符设备           character
-d file          file 存在且是文件夹           directory
-e file          file 存在              exist
-f file          file 存在并是个普通文件
-g file                    file 存在并是 SGID
-h file          file 存在并是个符号链接
-G file          file 存在并被有效的组拥有
-k file          file 存在并有 s 位
-L file          file 存在并是个符号链接
-O file                    file 存在并被有效用户拥有
-p file          file 存在并是个 named pipe
-r file                 file 存在并可读
-s file                    file 存在并不为 0(greater than 0)
-S file          file 存在并是个 socket
-t [FD]          文件描述 FD ?????  这个主要是为了测试 shell 是否是交互式...
-u file          file 存在并且 s 位设置过
-w file           file 存在并可写
-x file          file 存在并可执行
42、修改 Linux 网卡为混杂模式以 sniff
#ifconfig eth0 promisc
虽然说是可以抓获所有的包,但是这种是否捕获或分析抓到的包是由 os 决定是否接收的,也就是说并不能真正的...
43、物理安全 ---> 防止 ctrl_alt_del 重新启动服务器
#vi /etc/inittab
# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
将 ca 这行给注释掉...
44、关闭 Linux Kernel 的路由重定向功能
在 /etc/sysctl.conf 中加入如下行:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
45、关于 netstat -rn 中的 flags 的解释
U 该路由可以使用。
G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。
H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该
标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网
络号与子网号的组合。
D 该路由是由重定向报文创建的。
M 该路由已被重定向报文修改。
S 该路由是静态路由
46、关于 grep 的选项
常用的 grep 选项有:
-c 只输出匹配行的行数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
-w 精确匹配某个单词
'\<abc\>' file 精确匹配 file 文件中的 abc 字符
精确匹配的三种 grep:
1 grep -w "abc" data.f
2 grep '\<48\>' data.f
3 grep "48\>" data.f
常用 grep,   cniv
grep 在使用正则表达式的时候, 在匹配策略外面最好用单引号来括上
47、判断当前登陆用户
echo $LOGNAME
echo $USER
id
whoami
who am i
logname
48、关于 unset
#firstVar=first
#set
#unset firstVar
49、awk 的使用...
精确匹配第三个字符为 48 的行
awk '{if($3~/^48$/) print $0}' test.txt    // 注意这里尽管用正则表达式来匹配,但不能用 /\^48\$/, 而是可以直接使用 ^48$
如果是匹配第三个字符包含 48 的行
awk '{if($3~/48/) print $0}' test.txt
awk 中正则表达式中使用. 来表示单个字符,但是 shell 中使用?匹配单个字符。
用 | 表示 1 或 2 的关系,但只取一个,使用 | 时,必须使用圆括号括起来,如
awk '$0~/(Yellow|Brown)/' test.txt
用 && 表示与的关系,&& 的两天最好也要用括号括起来,如
awk '{if($1=="fist"&& $2=="second") print $0}' test.txt
用 || 表示或的关系,可以取一个,也可以取两个
awk '{if ($4=="forth"|| $5=="fifth") print $0 }' test.txt
同时匹配两个条件的使用:
awk '条件 1 &&  条件 2 {print $xxx}'
50、shell 中 ` 的作用
表达不清楚了... 如
test=`echo $LOGNAME`
则 echo $test 的结果为 echo $LOGNAME 的结果...
51、tr 的使用
将 test.txt 中的小写字母转换成大写
tr "[a-z]" "[A-Z]" < test.txt
不能用 tr "[a-z]" "[A-Z]" < test.txt
52、关于用户登陆终端的显示:
如果使用网络登陆,则 TTY 显示为如下:
USER     TTY      FROM      &