linux有不同的文件类型:
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
文件类型:
Linux文件 属主
和 属组
:
例如:
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
bin 文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
关键词:
cd
,ls
,pwd
,mkdir
,rmdir
,tree
,touch
,ln
,rename
,stat
,file
,chmod
,chown
,locate
,find
,cp
,scp
,mv
,rm
。
cd 命令用来切换工作目录。
示例:
cd # 切换到用户主目录
cd ~ # 切换到用户主目录
cd - # 切换到上一个工作目录
cd ./ # 就是指的当前目录
cd .. # 切换到上级目录
cd ../ # 切换到上级目录(与上一个一样)
cd ../.. # 切换到上两级目录
ls 命令用来显示目录信息。
ls # 列出当前目录可见文件
ls -l # 列出当前目录可见文件详细信息
ls -la # 列出所有文件(包括隐藏)的详细信息
ls -lh # 列出详细信息并以可读大小显示文件大小
ls -lt # 按时间列出文件和文件夹详细信息
ls -ltr # 按修改时间列出文件和文件夹详细信息
ls --color=auto # 列出文件并标记颜色分类
pwd 命令用来显示当前目录的绝对路径。
mkdir 命令用来创建目录。
# 在当前目录中创建 zp 和 zp 的子目录 test
mkdir -p zp/test
# 在当前目录中创建 zp 和 zp 的子目录 test;权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
mkdir -p -m 750 zp/test
rmdir 命令用来删除空目录。
# 删除子目录 test 和其父目录 zp
rmdir -p zp/test
tree 命令以树状显示目录的内。
示例:
# 列出目录 /private 第一级文件名
tree /private -L 1
/private/
├── etc
├── tftpboot
├── tmp
└── var
# 忽略文件夹
tree -I node_modules # 忽略当前目录文件夹 node_modules
tree -P node_modules # 列出当前目录文件夹 node_modules 的目录结构
tree -P node_modules -L 2 # 显示目录 node_modules 两层的目录树结构
tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中
# 忽略多个文件夹
tree -I 'node_modules|icon|font' -L 2
touch命令有两个功能:一是用来创建空文件,二是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。
ln 命令用来为文件创建
链接
。默认是硬链接。
注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。
链接又可分为两种 : 硬链接(hard link)
与软链接(symbolic link,又叫做 符号链接)
,硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
rename 命令用字符串替换的方式批量重命名。
# 将 main1.c 重命名为 main.c
rename main1.c main.c main1.c
rename "s/AA/aa/" * # 把文件名中的 AA 替换成 aa
rename "s//.html//.php/" * # 把 .html 后缀的改成 .php 后缀
rename "s/$//.txt/" * # 把所有的文件名都以 txt 结尾
rename "s//.txt//" * # 把所有以 .txt 结尾的文件名的.txt 删掉
stat 命令用于显示文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。
file 命令用来探测给定文件的类型。file 命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3 个过程。
示例:
file install.log # 显示文件类型
file -b install.log # 不显示文件名称
file -i install.log # 显示 MIME 类型
file -L /var/spool/mail # 显示符号链接的文件类型
chmod 命令用来变更文件或目录的权限。
三种执行权限对应值:
r=读取属性 //值= 4
w=写入属性 //值= 2
x=执行属性 //值= 1
知识扩展:
-rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆ ┆ ╰┈ 0 其他人
# ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
# ┆ ╰┈┈┈┈ u 属主
# ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件
# 案例:
chmod u=rwx,g=rw,o=r file01 # 为属主,属组,其他人设定不同权限
chmod a+x file01 # 对文件file01的u,g,o都设置可执行属性
# -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
chmod -R 755 /home/wwwroot/*
# 如果不跟u,g,o的话就全部减了。 同样 +x 也是 一样的。
chmod -x /home/wwwroot/*
# 对应u是7,g是7,o是7
chmod 777 a.txt
知识点:
-r 参数命令
就可以理解为递归,文件夹的递归,文件夹下的文件或者文件夹,这样好记,方便理解。chown 命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
# 将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu
chown -R liu /usr/meng
locate 命令和 slocate 命令都用来查找文件或目录。
locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是
搜索一个数据库/var/lib/locatedb
,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次
,所以使用 locate 命令查不到最新变动过的文件
。为了避免这种情况,可以在使用 locate 之前,先使用updatedb 命令,手动更新数据库
。
示例:
locate pwd # 查找和 pwd 相关的所有文件
locate /etc/sh # 搜索 etc 目录下所有以 sh 开头的文件
updatedb 命令用来创建或更新 slocate/locate 命令所必需的数据库文件。
如果locate命令,不起作用,那就是没有更新数据库的原因。就限制性updatedb命令,之后再查找就可。
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
示例:
# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
find . -type f -name "*" | xargs grep "140.206.111.111"
# 列出当前目录及子目录下所有文件和文件夹
find .
# 在 /home 目录下查找以 .txt 结尾的文件名
find /home -name "*.txt"
# 同上,但忽略大小写
find /home -iname "*.txt"
# 当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件
find . -name "*.txt" -o -name "*.pdf"
# 匹配文件路径或者文件
find /usr/ -path "*local*"
# 基于正则表达式匹配文件路径
find . -regex ".*\(\.txt\|\.pdf\)$"
# 同上,但忽略大小写
find . -iregex ".*\(\.txt\|\.pdf\)$"
# 找出 /home 下不是以 .txt 结尾的文件
find /home ! -name "*.txt"
which命令:查找命令的绝对路径。
whereis命令: 查找命令的程序、源代码等相关文件
小知识点:
:$PATH
,这个符号理解为将原来PATH下的内容,追加到后面。win7是用;分号
进行分隔追加PATH路径,在这里道理一样的。cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
-r
选项;示例:
# 将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1
cp file /usr/men/tmp/file1
# 将目录 /usr/men下的所有文件及其子目录复制到目录 /usr/zh 中
cp -r /usr/men /usr/zh
# 强行将 /usr/men下的所有文件复制到目录 /usr/zh 中,无论是否有文件重复
cp -rf /usr/men/* /usr/zh
# 将目录 /usr/men 中的以 m 打头的所有 .c 文件复制到目录 /usr/zh 中
cp -i /usr/men m*.c /usr/zh
mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
示例:
mv file1.txt /home/office/ # 移动单个文件
mv file2.txt file3.txt file4.txt /home/office/ # 移动多个文件
mv *.txt /home/office/ # 移动所有 txt 文件
mv dir1/ /home/office/ # 移动目录
mv /usr/men/* . # 将指定目录中的所有文件移到当前目录中
mv file1.txt file2.txt # 重命名文件
mv dir1/ dir2/ # 重命名目录
mv -v *.txt /home/office # 打印移动信息
mv -i file1.txt /home/office # 提示是否覆盖文件
mv -uv *.txt /home/office # 源文件比目标文件新时才执行更新
mv -vn *.txt /home/office # 不要覆盖任何已存在的文件
mv -f *.txt /home/office # 无条件覆盖已经存在的文件
mv -bv *.txt /home/office # 复制时创建备份
rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
示例:
rm test.txt # 删除文件
rm -i test.txt test2.txt # 交互式删除文件
rm -r * # 删除当前目录下的所有文件和目录
rm -r testdir # 删除目录下的所有文件和目录
rm -rf testdir # 强制删除目录下的所有文件和目录
rm -v testdir # 显示当前删除操作的详情
scp 命令用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp,不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。
示例:
# 拷贝文件到远程服务器的指定目录
scp <file> <user>@<ip>:<url>
scp test.txt [email protected]:/opt
# 拷贝目录到远程服务器的指定目录
scp -r <folder> <user>@<ip>:<url>
scp -r test [email protected]:/opt
关键词:
cat
,head
,tail
,more
,less
,sed
,vi
,grep
。
cat 命令用于连接文件并打印到标准输出设备上。
示例:
cat m1 # 在屏幕上显示文件 ml 的内容
cat m1 m2 # 同时显示文件 ml 和 m2 的内容
cat m1 m2 > file # 将文件 ml 和 m2 合并后放入文件 file 中
head 命令用于显示文件的开头内容。
head -n11 file01 # 查看file01文件开头的11行
tail 命令用于显示文件的尾部内容。
示例:
tail file # 显示文件file的最后10行
tail -n +20 file # 显示文件file的内容,从第20行至文件末尾
tail -c 10 file # 显示文件file的最后10个字符
tail -f 监听的使用:
tail -f 使用vim是不可以的!!!必须追加的内容才行
,像echo >> xxx来追加。echo 123 >> aa 追加aa文件中。
echo 123 > aa 覆盖aa文件中的内。
tail -f ./aaas # 一直监控aaas文件
more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。
more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)
。
示例:
# 显示文件 file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
more -dc file
# 显示文件 file 的内容,每 10 行显示一次,而且在显示之前先清屏。
more -c -10 file
注意:more命令只能向前浏览。
less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是
less 命令允许用户向前或向后浏览文件
,而 more 命令只能向前浏览。用 less 命令显示文件时,用PageUp 键向上翻页,用 PageDown 键向下翻页
。要退出 less 程序,应按 Q 键。
sed 是一种流编辑器,它是文本处理工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
# 替换文本中的字符串
sed 's/book/books/' file
# -n 选项 和 p 命令 一起使用表示只打印那些发生替换的行
sed -n 's/test/TEST/p' file
# 直接编辑文件选项 -i ,会匹配 file 文件中每一行的第一个 book 替换为 books
sed -i 's/book/books/g' file
# 使用后缀 /g 标记会替换每一行中的所有匹配
sed 's/book/books/g' file
# 删除空白行
sed '/^$/d' file
# 删除文件的第2行
sed '2d' file
# 删除文件的第2行到末尾所有行
sed '2,$d' file
# 删除文件最后一行
sed '$d' file
# 删除文件中所有开头是test的行
sed '/^test/'d file
vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫
vim,它是 vi 的增强版(vi Improved)
,与 vi 编辑器完全兼容,而且实现了很多增强功能。
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
示例:
# 在多级目录中对文本递归搜索(程序员搜代码的最爱):
$ grep "class" . -R -n
# 忽略匹配样式中的字符大小写
$ echo "hello world" | grep -i "HELLO"
# 匹配多个模式:
$ grep -e "class" -e "vitural" file
# 只在目录中所有的.php和.html文件中递归搜索字符"main()"
$ grep "main()" . -r --include *.{php,html}
# 在搜索结果中排除所有README文件
$ grep "main()" . -r --exclude "README"
# 在搜索结果中排除filelist文件列表里的文件
$ grep "main()" . -r --exclude-from filelist
关键词:
tar
,gzip
,zip
,unzip
。
tar 配合参数,实现打包,压缩,解压缩等等操作。
示例:
tar 打包:
tar -cvf a.tar a.txt #仅仅打包,不会压缩,后缀名名字最好是.tar,也为了方便解压。
tar 打包 + 压缩(gzip形式压缩)
# 打包 + 压缩(gzip形式压缩)
tar -zcvf a.tar.gz a.txt # 打包后,以 gzip 压缩,后缀名最好是.tar.gz。
tar 打包+压缩(bzip2形式压缩)
tar -jcvf a.tar.bz2 a.txt # 打包后,以 bzip2 压缩
tar 解压缩:
tar -ztvf log.tar.gz # 查阅上述 tar 包内有哪些文件
tar -zxvf log.tar.gz # 将 tar 包解压缩
tar -zxvf log30.tar.gz log2013.log # 只将 tar 内的部分文件解压出来
gzip 命令用来压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。
gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本文件有 60%~ 70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
示例:
gzip * # 将所有文件压缩成 .gz 文件
gzip -l * # 详细显示压缩文件的信息,并不解压
gzip -dv * # 解压上例中的所有压缩文件,并列出详细的信息
gzip -r log.tar # 压缩一个 tar 备份文件,此时压缩文件的扩展名为.tar.gz
gzip -rv test/ # 递归的压缩目录
gzip -dr test/ # 递归地解压目录
zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
示例:
# 将 /home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
zip -q -r html.zip /home/Blinux/html
unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包。
示例:
unzip test.zip # 解压 zip 文件
unzip -n test.zip -d /tmp/ # 在指定目录下解压缩
unzip -o test.zip -d /tmp/ # 在指定目录下解压缩,如果有相同文件存在则覆盖
unzip -v test.zip # 查看压缩文件目录,但不解压
关键词:
df
,du
,top
,free
,iotop
。
df 命令(disk)用于
显示磁盘分区上的可使用的磁盘空间
。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
示例:
# 查看系统磁盘设备,默认是 KB 为单位
[root@root ~] df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
/dev/sda1 1019208 62360 904240 7% /boot
tmpfs 1032204 0 1032204 0% /dev/shm
/dev/sdb1 2884284108 218826068 2518944764 8% /data1
# 使用 -h 选项以 KB 以上的单位来显示,可读性高
[root@root ~] df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 140G 27G 106G 21% /
/dev/sda1 996M 61M 884M 7% /boot
tmpfs 1009M 0 1009M 0% /dev/shm
/dev/sdb1 2.7T 209G 2.4T 8% /data1
# 查看全部文件系统
[root@root ~] df -a
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda2 146294492 28244432 110498708 21% /
proc 0 0 0 - /proc
sysfs 0 0 0 - /sys
devpts 0 0 0 - /dev/pts
/dev/sda1 1019208 62360 904240 7% /boot
tmpfs 1032204 0 1032204 0% /dev/shm
/dev/sdb1 2884284108 218826068 2518944764 8% /data1
none 0 0 0 - /proc/sys/fs/binfmt_misc
du 命令是
对文件和目录磁盘使用的空间的查看
。
示例:
# 显示目录或者文件所占空间
root@localhost [test]# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .
# 显示指定文件所占空间
[root@localhost test]# du log2012.log
300 log2012.log
# 查看指定目录的所占空间
[root@localhost test]# du scf
4 scf/lib
4 scf/service/deploy/product
4 scf/service/deploy/info
12 scf/service/deploy
16 scf/service
4 scf/doc
4 scf/bin
32 scf
# 显示多个文件所占空间
[root@localhost test]# du log30.tar.gz log31.tar.gz
4 log30.tar.gz
4 log31.tar.gz
# 只显示总和的大小
[root@localhost test]# du -s
1288 .
[root@localhost test]# du -s scf
32 scf
top 命令,就可以
理解为linux系统的任务管理器
。实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
按进程的CPU使用率排序:
进程的内存使用率排序:
free 命令,
针对内存的
,可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
示例:
free -t # 以总和的形式显示内存的使用信息
free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令
# 显示内存使用情况
free -m
total used free shared buffers cached
Mem: 2016 1973 42 0 163 1497
-/+ buffers/cache: 312 1703
Swap: 4094 0 4094
关键词:
curl
,wget
,telnet
,ip
,hostname
,ifconfig
,route
,ssh
,ssh-keygen
,firewalld
,iptables
,host
,nslookup
,nc/netcat
,ping
,traceroute
,netstat
。
curl 命令是
一个利用 URL 规则在命令行下工作的文件传输工具
。它支持文件的上传和下载
,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具,curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl 可以祝一臂之力。
示例:
# 下载文件
$ curl http://man.linuxde.net/text.iso --silent
# 下载文件,指定下载路径,并查看进度
$ curl http://man.linuxde.net/test.iso -o filename.iso --progress
########################################## 100.0%
wget 命令用来从指定的 URL 下载文件。
示例:
# 使用 wget 下载单个文件
$ wget http://www.linuxde.net/testfile.zip
telnet 命令一般用作测试远程端口连接,功能是用于远端登入。
示例:
telnet 192.168.2.10
Trying 192.168.2.10...
Connected to 192.168.2.10 (192.168.2.10).
Escape character is '^]'.
localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1)
login: root
Password:
Login incorrect
ip 命令用来查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道,是 Linux 下较新的功能强大的网络配置工具。
示例:
$ ip link show # 查看网络接口信息
$ ip link set eth0 upi # 开启网卡
$ ip link set eth0 down # 关闭网卡
$ ip link set eth0 promisc on # 开启网卡的混合模式
$ ip link set eth0 promisc offi # 关闭网卡的混个模式
$ ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
$ ip link set eth0 mtu 1400 # 设置网卡最大传输单元
$ ip addr show # 查看网卡IP信息
$ ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
$ ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
$ ip route show # 查看系统路由
$ ip route add default via 192.168.1.254 # 设置系统默认路由
$ ip route list # 查看路由信息
$ ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
$ ip route add default via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254
$ ip route del 192.168.4.0/24 # 删除192.168.4.0网段的网关
$ ip route del default # 删除默认路由
$ ip route delete 192.168.1.0/24 dev eth0 # 删除路由
hostname 命令
用于查看和设置系统的主机名称
。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容。
ifconfig 命令
被用于查看和配置 Linux 内核中网络接口的网络参数
。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
route 命令用来
查看和设置 Linux 内核中的网络路由表
,route 命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
示例:
# 查看当前路由
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.124.12.0 * 255.255.252.0 U 0 0 0 eth1
10.160.0.0 * 255.255.240.0 U 0 0 0 eth0
192.168.0.0 10.160.15.247 255.255.0.0 UG 0 0 0 eth0
172.16.0.0 10.160.15.247 255.240.0.0 UG 0 0 0 eth0
10.0.0.0 10.160.15.247 255.0.0.0 UG 0 0 0 eth0
default 112.124.15.247 0.0.0.0 UG 0 0 0 eth1
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 # 添加网关/设置网关
route add -net 224.0.0.0 netmask 240.0.0.0 reject # 屏蔽一条路由
route del -net 224.0.0.0 netmask 240.0.0.0 # 删除路由记录
route add default gw 192.168.120.240 # 添加默认网关
route del default gw 192.168.120.240 # 删除默认网关
ssh 命令是
openssh 套件中的客户端连接工具
,可以给予 ssh 加密协议实现安全的远程登录服务器
。
示例:
# ssh 用户名@远程服务器地址
ssh [email protected]
# 指定端口
ssh -p 2211 [email protected]
ssh-keygen 命令用于
为 ssh 生成、管理和转换认证密钥
,它支持 RSA 和 DSA 两种认证密钥。
firewalld 命令是 Linux 上的
防火墙软件
。
systemctl 是服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。
iptables 命令是
Linux 上常用的防火墙软件
,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
示例:
# 开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
# 屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
# 查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
nc 命令是 netcat 命令的简称,都是用来设置路由器。
ping 命令用来
测试主机之间网络的连通性
。
traceroute 命令用于
追踪数据包在网络上的传输时的全部路径
,它默认发送的数据包大小是 40 字节。
netstat 命令用于
显示网络状态
,打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。
示例:
# 列出所有端口 (包括监听和未监听的)
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
# 列出所有处于监听状态的 Sockets
netstat -l #只显示监听端口
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口
# 显示每个协议的统计信息
netstat -s 显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息
关键词:
groupadd
,groupdel
,groupmod
,useradd
,userdel
,usermod
,passwd
,su
,sudo
。
groupadd 命令用于
创建一个新的用户组
,新用户组的信息将被添加到系统文件中。
相关文件:
示例:
# 建立一个新组,344就是设置组ID,
$ groupadd -g 344 itholmes
# 此时在 /etc/group 文件中产生一个组 ID(GID)是 344 的项目。
$ less /etc/group
# 使用tail -1 更好!!
$ tail -1 /etc/group
itholmes:x:344:
groupdel 命令用于
删除指定的用户组
,本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
groupmod 命令
更改群组识别码(组ID)或名称(组名称)
。
示例:
# 查看group文件里面,最后一个添加的用户组
$ tail -1 /etc/group
itholmes:x:344:
# -g:指定新的组ID,-n:指定新的组名称
$ groupmod -g 500 -n itholmesNes itholmes
$ tail -1 /etc/group
itholmesNes:x:500:
useradd 可用来
建立用户帐号
。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中
。
用户组:
用户目录:
示例:
# 创建新用户itholmes,加入itholmesGroup组中。
$ useradd -d /opt/ -g itholmesGroup -r -u 544 itholmes
# -g:加入主要组、-G:加入次要组
小知识点:
userdel 命令
用于删除给定的用户,以及与用户相关的文件
。若不加选项,则仅删除用户帐号,而不删除相关文件
。
usermod 命令
用于修改用户的基本信息
。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序
。
示例:
# 更改登录目录
$ usermod -d /home/hnlinux root
# 改变用户的uid
$ usermod -u 123 root
passwd 命令
用于设置用户的认证信息,包括用户密码、密码过期时间
等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码
。
示例:
# 比如我们让某个用户不能修改密码,可以用`-l`选项来锁定:
$ passwd -l linuxde # 锁定用户linuxde不能更改密码;
Locking password for user linuxde.
passwd: Success # 锁定成功;
# 通过su切换到itholmes用户;
$ su itholmes
# -d 清除itholmes用户密码;
$ passwd -d itholmes
# 查询itholmes用户密码状态
$ passwd -S itholmes
su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
sudo 命令用来以其他身份来执行命令,预设的身份为 root(也就是默认是root)。在 /etc/sudoers 中设置了可执行 sudo 指令的用户。
示例:
# 指定用户执行命令
$ sudo -u userb ls -l
# 列出目前的权限
$ sudo -l
# 显示sudo设置
$ sudo -L
假设要给普通用户 itholmes 配置 sudo 权限:
/etc/sudoers 文件
存放了 sudo 的相关用户,但是默认是没有写权限的,所以需要设为可写:chmod u+w /etc/sudoers。与给普通用户授权 sudo 类似,区别仅在于第 2 步:mary ALL=(ALL) NOPASSWD: ALL。
关键词:
lsb_release
,reboot
,exit
,shutdown
,date
,mount
,umount
,ps
,kill
,systemctl
,service
,crontab
。
reboot 命令用来
重新启动正在运行的 Linux 操作系统
。
示例:
reboot # 重开机。
reboot -w # 做个重开机的模拟(只有纪录并不会真的重开机)。
exit命令用于
退出目前的shell(脚本)
。
示例:
$ exit # 单独输入exit是退出终端的意思。
shutdown 命令用来
系统关机命令
。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
示例:
# 指定现在立即关机
shutdown -h now
# 指定 5 分钟后关机,同时送出警告信息给登入用户
shutdown +5 "System will shutdown after 5 minutes"
date 命令是
显示或设置系统时间与日期
。
示例:
# 格式化输出
date +"%Y-%m-%d"
2009-12-07
# 输出昨天日期
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
# 2 秒后输出
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
# 传说中的 1234567890 秒
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
# 普通转格式
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
# apache 格式转换
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
# 格式转换后时间游走
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
# 加减操作
date +%Y%m%d # 显示前天年月日
date -d "+1 day" +%Y%m%d # 显示前一天的日期
date -d "-1 day" +%Y%m%d # 显示后一天的日期
date -d "-1 month" +%Y%m%d # 显示上一月的日期
date -d "+1 month" +%Y%m%d # 显示下一月的日期
date -d "-1 year" +%Y%m%d # 显示前一年的日期
date -d "+1 year" +%Y%m%d # 显示下一年的日期
# 设定时间
date -s # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 # 设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" # 这样可以设置全部时间
date -s "01:01:01 20120523" # 这样可以设置全部时间
date -s "2012-05-23 01:01:01" # 这样可以设置全部时间
date -s "20120523 01:01:01" # 这样可以设置全部时间
# 有时需要检查一组命令花费的时间
#!/bin/bash
start=$(date +%s)
nmap man.linuxde.net &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
mount 命令用于挂载文件系统到指定的挂载点。
umount 命令用于
卸载已经挂载的文件系统
。利用设备名或挂载点都能 umount 文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
ps 命令用于报告当前系统的进程状态。
示例:
# 按内存资源的使用量对进程进行排序
ps aux | sort -rnk 4
# 按 CPU 资源的使用量对进程进行排序
ps aux | sort -nk 3
kill 命令用来
删除执行中的程序或工作
。预设的信息为 SIGTERM(15),可将指定程序终止
。若仍无法终止该程序,可使用SIGKILL(9) 信息尝试强制删除程序
。
service 命令是 Redhat Linux 兼容的发行版中用来
控制系统服务的实用工具
,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
示例:
service network status
配置设备:
lo eth0
当前的活跃设备:
lo eth0
service network restart
正在关闭接口 eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0: [ 确定 ]
crontab 命令被用来提交和管理用户的需要
周期性执行的任务
。
详情见:https://www.runoob.com/linux/linux-comm-crontab.html
systemctl 命令是
系统服务管理器指令
,它实际上将 service 和 chkconfig 这两个命令组合到一起。
示例:
# 1.启动 nfs 服务
systemctl start nfs-server.service
# 2.设置开机自启动
systemctl enable nfs-server.service
# 3.停止开机自启动
systemctl disable nfs-server.service
# 4.查看服务当前状态
systemctl status nfs-server.service
# 5.重新启动某服务
systemctl restart nfs-server.service
# 6.查看所有已启动的服务
systemctl list -units --type=service
# 7. 开启防火墙 22 端口
iptables -I INPUT -p tcp --dport 22 -j accept
# 8. 彻底关闭防火墙
sudo systemctl status firewalld.service
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
关键词:
rpm
,yum
,apt-get
。
rpm 命令是
RPM 软件包的管理工具
。
# -i 显示套件的相关信息。
# -v 显示指令执行过程。
# -h或--hash 套件安装时列出标记。
rpm -ivh xxx.rpm
$ rpm -i xxx.src.rpm
$ cd /usr/src/redhat/SPECS
# 一个和你的软件包同名的specs文件
$ rpmbuild -bp xxx.specs
# 一个和你的软件包同名的目录
$ cd /usr/src/redhat/BUILD/xxx/
# 这一步和编译普通的源码软件一样,可以加上参数
$ ./configure
$ make
$ make install
命令 rpm -e 包名
,包名可以包含版本号等信息,但是不可以有后缀.rpm有时会出现一些错误或者警告:
… is needed by …
这说明这个软件被其他软件需要,不能随便卸载,可以用 rpm -e --nodeps 强制卸载
。
# -a 查询所有套件。
# -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
rpm -qa # 列出所有安装过的包
yum 命令 基于 RPM 包管理,能够从
指定的服务器自动下载 RPM 包并且安装
,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
替换yum源:
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
apt-get 命令是
Debian Linux 发行版中的 APT 软件包管理工具
。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件。
示例:
# 更新 apt-get
apt-get update
# 安装一个软件包
apt-get install packagename
# 卸载一个已安装的软件包(保留配置文件)
apt-get remove packagename
# 卸载一个已安装的软件包(删除配置文件)
apt-get –purge remove packagename
# 如果需要空间的话,可以让这个命令来删除你已经删掉的软件
apt-get autoclean apt
# 把安装的软件的备份也删除,不过这样不会影响软件的使用的
apt-get clean
# 更新所有已安装的软件包
apt-get upgrade
# 将系统升级到新版本
apt-get dist-upgrade