1. Linux 之 文件目录 工作机制
Linux目录结构是树形结构,根目录是 /
。
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
文件类型:
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
Linux文件 属主
和 属组
:
- 在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。
- 文件拥有者以外的用户又可以分为 文件拥有者的同组用户 和 其他用户 。
- 因此,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,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
2. Linux命令 之 文件目录管理
关键词:cd
, ls
, pwd
, mkdir
, rmdir
, tree
, touch
, ln
, rename
, stat
, file
, chmod
, chown
, locate
, find
, cp
, scp
, mv
, rm
。
2.1 目录管理
2.1.1 cd
cd 命令用来切换工作目录。
示例:
cd
cd ~
cd -
cd ./
cd ..
cd ../
cd ../..
2.1.2 ls
ls 命令用来显示目录信息。
ls
ls -l
ls -la
ls -lh
ls -lt
ls -ltr
ls --color=auto
2.1.3 pwd
pwd 命令用来显示当前目录的绝对路径。
2.1.4 mkdir
mkdir 命令用来创建目录。
mkdir -p zp/test
mkdir -p -m 750 zp/test
2.1.5 rmdir
rmdir 命令用来删除空目录。
rmdir -p zp/test
2.1.6 tree(需要安装)
tree 命令以树状显示目录的内。
示例:
tree /private -L 1
/private/
├── etc
├── tftpboot
├── tmp
└── var
tree -I node_modules
tree -P node_modules
tree -P node_modules -L 2
tree -L 2 > /home/www/tree.txt
tree -I 'node_modules|icon|font' -L 2
2.2 文件管理
2.2.1 touch
touch命令有两个功能:一是用来创建空文件,二是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。
2.2.2 ln
ln 命令用来为文件创建链接
。默认是硬链接。
注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。
链接又可分为两种 : 硬链接(hard link)
与软链接(symbolic link,又叫做 符号链接)
,硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
2.2.3 rename
rename 命令用字符串替换的方式批量重命名。
rename main1.c main.c main1.c
rename "s/AA/aa/" *
rename "s//.html//.php/" *
rename "s/$//.txt/" *
rename "s//.txt//" *
2.2.4 stat
stat 命令用于显示文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。
2.2.5 file
file 命令用来探测给定文件的类型。file 命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3 个过程。
示例:
file install.log
file -b install.log
file -i install.log
file -L /var/spool/mail
2.2.6 chmod
chmod 命令用来变更文件或目录的权限。
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
三种执行权限对应值:
r=读取属性 //值= 4
w=写入属性 //值= 2
x=执行属性 //值= 1
知识扩展:
-rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
chmod u=rwx,g=rw,o=r file01
chmod a+x file01
chmod -R 755 /home/wwwroot/*
chmod -x /home/wwwroot/*
chmod 777 a.txt
知识点:
- 在所有命令中,大多数
-r 参数命令
就可以理解为递归,文件夹的递归,文件夹下的文件或者文件夹,这样好记,方便理解。
2.2.7 chown
chown 命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。
- 只有文件拥有者和超级用户才可以便用该命令。
示例:
chown -R liu /usr/meng
2.2.8 locate 和 updatedb
locate 命令和 slocate 命令都用来查找文件或目录。
locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb
,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次
,所以使用 locate 命令查不到最新变动过的文件
。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库
。
示例:
locate pwd
locate /etc/sh
updatedb 命令用来创建或更新 slocate/locate 命令所必需的数据库文件。
- updatedb 命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入 slocate/locate 数据库文件中。
如果locate命令,不起作用,那就是没有更新数据库的原因。就限制性updatedb命令,之后再查找就可。
2.2.9 find
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
- -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
示例:
find . -type f -name "*" | xargs grep "140.206.111.111"
find .
find /home -name "*.txt"
find /home -iname "*.txt"
find . -name "*.txt" -o -name "*.pdf"
find /usr/ -path "*local*"
find . -regex ".*\(\.txt\|\.pdf\)$"
find . -iregex ".*\(\.txt\|\.pdf\)$"
find /home ! -name "*.txt"
2.2.10 which
which命令:查找命令的绝对路径。
2.2.11 whereis
whereis命令: 查找命令的程序、源代码等相关文件
- which + whereis 只能查找系统里面对应的环境变量$PATH设置的目录里查找符合条件的文件。
小知识点:
- 在/etc/profile,有时会看到
:$PATH
,这个符号理解为将原来PATH下的内容,追加到后面。win7是用;分号
进行分隔追加PATH路径,在这里道理一样的。
2.3 文件和目录通用管理
2.3.1 cp
cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
- 默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用
-r
选项;
示例:
cp file /usr/men/tmp/file1
cp -r /usr/men /usr/zh
cp -rf /usr/men/* /usr/zh
cp -i /usr/men m*.c /usr/zh
2.3.2 mv
mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
示例:
mv file1.txt /home/office/
mv file2.txt file3.txt file4.txt /home/office/
mv *.txt /home/office/
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
2.3.3 rm
rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
- -r 将目录及以下之档案亦逐一删除。 -r就有牵连目录以及目录以下的意思。
示例:
rm test.txt
rm -i test.txt test2.txt
rm -r *
rm -r testdir
rm -rf testdir
rm -v testdir
2.3.4 scp
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 root@192.168.0.1:/opt
scp -r <folder> <user>@<ip>:<url>
scp -r test root@192.168.0.1:/opt
3. Linux 之 文件内容查看 和 编辑
关键词:cat
, head
, tail
, more
, less
, sed
, vi
, grep
。
3.1 cat
cat 命令用于连接文件并打印到标准输出设备上。
示例:
cat m1
cat m1 m2
cat m1 m2 > file
3.2 head
head 命令用于显示文件的开头内容。
- 在默认情况下,head 命令显示文件的头部 10 行内容。
- -n11参数:相当于查看头部的第11行。
head -n11 file01
3.3 tail
tail 命令用于显示文件的尾部内容。
- 在默认情况下,tail 命令显示文件的尾部 10 行内容。
- -n11命令:相当于查看尾部最后的11行。
- tail -f 监视文件,一直监视者。
示例:
tail file
tail -n +20 file
tail -c 10 file
tail -f 监听的使用:
- 所以有时候,一般看tomcat日志,就用tail -f来监听tomcat日志啥的。
- 注意:
tail -f 使用vim是不可以的!!!必须追加的内容才行
,像echo >> xxx来追加。
echo 123 >> aa 追加aa文件中。
echo 123 > aa 覆盖aa文件中的内。
tail -f ./aaas
3.4 more
more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)
。
- 按 Space 键:显示文本的下一屏内容。
- 按 Enier 键:只显示文本的下一行内容。
- 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
- 按 H 键:显示帮助屏,该屏上有相关的帮助信息。
- 按 B 键:显示上一屏内容。
- 按 Q 键:退出 rnore 命令。
示例:
more -dc file
more -c -10 file
注意:more命令只能向前浏览。
3.5 less
less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是less 命令允许用户向前或向后浏览文件
,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页
。要退出 less 程序,应按 Q 键。
3.6 sed
sed 是一种流编辑器,它是文本处理工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed 's/book/books/' file
sed -n 's/test/TEST/p' file
sed -i 's/book/books/g' file
sed 's/book/books/g' file
sed '/^$/d' file
sed '2d' file
sed '2,$d' file
sed '$d' file
sed '/^test/'d file
3.7 vi
vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved)
,与 vi 编辑器完全兼容,而且实现了很多增强功能。
3.8 grep
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
$ grep "main()" . -r --include *.{php,html}
$ grep "main()" . -r --exclude "README"
$ grep "main()" . -r --exclude-from filelist
4. Linux 文件压缩和解压
关键词:tar
, gzip
, zip
, unzip
。
4.1 tar
tar 配合参数,实现打包,压缩,解压缩等等操作。
示例:
tar 打包:
tar -cvf a.tar a.txt
tar 打包 + 压缩(gzip形式压缩)
tar -zcvf a.tar.gz a.txt
tar 打包+压缩(bzip2形式压缩)
tar -jcvf a.tar.bz2 a.txt
tar 解压缩:
tar -ztvf log.tar.gz
tar -zxvf log.tar.gz
tar -zxvf log30.tar.gz log2013.log
4.2 gzip
gzip 命令用来压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。
gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本文件有 60%~ 70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
示例:
gzip *
gzip -l *
gzip -dv *
gzip -r log.tar
gzip -rv test/
gzip -dr test/
4.3 zip
zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。
示例:
zip -q -r html.zip /home/Blinux/html
4.4 unzip
unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包。
示例:
unzip test.zip
unzip -n test.zip -d /tmp/
unzip -o test.zip -d /tmp/
unzip -v test.zip
5. Linux 之 硬件管理
关键词:df
, du
, top
, free
, iotop
。
5.1 df
df 命令(disk)用于显示磁盘分区上的可使用的磁盘空间
。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df命令显示的名称对应:
示例:
[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
[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
5.2 du
du 命令是对文件和目录磁盘使用的空间的查看
。
示例:
root@localhost [test]
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]
300 log2012.log
[root@localhost test]
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]
4 log30.tar.gz
4 log31.tar.gz
[root@localhost test]
1288 .
[root@localhost test]
32 scf
5.3 top
top 命令,就可以理解为linux系统的任务管理器
。实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
按进程的CPU使用率排序:
进程的内存使用率排序:
5.4 free
free 命令,针对内存的
,可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
示例:
free -t
free -s 10
free -m
total used free shared buffers cached
Mem: 2016 1973 42 0 163 1497
-/+ buffers/cache: 312 1703
Swap: 4094 0 4094
5.5 iotop (需要安装)
iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。
6. Linux 之 网络管理
关键词:curl
,wget
, telnet
, ip
, hostname
, ifconfig
, route
, ssh
, ssh-keygen
, firewalld
, iptables
, host
, nslookup
, nc/netcat
, ping
, traceroute
, netstat
。
6.1 curl、wget
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
wget 命令用来从指定的 URL 下载文件。
示例:
$ wget http://www.linuxde.net/testfile.zip
6.2 telnet
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
login: root
Password:
Login incorrect
6.4 ip
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 addr add 192.168.0.1/24 dev eth0
$ ip addr del 192.168.0.1/24 dev eth0
$ 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
$ ip route add default via 192.168.0.254 dev eth0
$ ip route del 192.168.4.0/24
$ ip route del default
$ ip route delete 192.168.1.0/24 dev eth0
6.5 hostname
hostname 命令用于查看和设置系统的主机名称
。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容。
6.6 ifconfig
ifconfig 命令被用于查看和配置 Linux 内核中网络接口的网络参数
。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
6.7 route
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
6.8 ssh
ssh 命令是 openssh 套件中的客户端连接工具
,可以给予 ssh 加密协议实现安全的远程登录服务器
。
示例:
ssh user1@172.24.210.101
ssh -p 2211 root@140.206.185.170
6.9 ssh-keygen
ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥
,它支持 RSA 和 DSA 两种认证密钥。
6.10 firewalld
firewalld 命令是 Linux 上的防火墙软件
。
6.10.1 firewalld 的基本使用
- 启动 - systemctl start firewalld
- 关闭 - systemctl stop firewalld
- 查看状态 - systemctl status firewalld
- 开机禁用 - systemctl disable firewalld
- 开机启用 - systemctl enable firewalld
6.10.2 使用 systemctl 管理 firewalld 服务
systemctl 是服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。
- 启动一个服务 - systemctl start firewalld.service
- 关闭一个服务 - systemctl stop firewalld.service
- 重启一个服务 - systemctl restart firewalld.service
- 显示一个服务的状态 - systemctl status firewalld.service
- 在开机时启用一个服务 - systemctl enable firewalld.service
- 在开机时禁用一个服务 - systemctl disable firewalld.service
- 查看服务是否开机启动 - systemctl is-enabled firewalld.service
- 查看已启动的服务列表 - systemctl list-unit-files|grep enabled
- 查看启动失败的服务列表 - systemctl --failed
6.10.3 配置 firewall-cmd(需要安装)
- 查看版本 - firewall-cmd --version
- 查看帮助 - firewall-cmd --help
- 显示状态 - firewall-cmd --state
- 查看所有打开的端口 - firewall-cmd --zone=public --list-ports
- 更新防火墙规则 - firewall-cmd --reload
- 查看区域信息: firewall-cmd --get-active-zones
- 查看指定接口所属区域 - firewall-cmd --get-zone-of-interface=eth0
- 拒绝所有包:firewall-cmd --panic-on
- 取消拒绝状态 - firewall-cmd --panic-off
- 查看是否拒绝 - firewall-cmd --query-panic
6.10.4 在防火墙中开放一个端口(常用)
- 添加(–permanent 永久生效,没有此参数重启后失效) - firewall-cmd --zone=public --add-port=80/tcp --permanent
- 重新载入 - firewall-cmd --reload
- 查看 - firewall-cmd --zone= public --query-port=80/tcp
- 删除 - firewall-cmd --zone= public --remove-port=80/tcp --permanent
6.11 iptables
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
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -j reject
iptables -A FORWARD -j REJECT
iptables -I INPUT -s 123.45.6.7 -j DROP
iptables -I INPUT -s 123.0.0.0/8 -j DROP
iptables -I INPUT -s 124.45.0.0/16 -j DROP
iptables -I INPUT -s 123.45.6.0/24 -j DROP
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
6.12 host
host 命令是常用的分析域名查询工具
,可以用来测试域名系统工作是否正常
。
6.13 nslookup
nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。
6.14 nc/netcat
nc 命令是 netcat 命令的简称,都是用来设置路由器。
6.15 ping
ping 命令用来测试主机之间网络的连通性
。
6.16 traceroute(需要安装)
traceroute 命令用于追踪数据包在网络上的传输时的全部路径
,它默认发送的数据包大小是 40 字节。
6.17 netstat
netstat 命令用于显示网络状态
,打印 Linux 中网络系统的状态信息,可让你得知整个 Linux 系统的网络情况。
解释一下 - n 参数命令的效果:
示例:
netstat -a
netstat -at
netstat -au
netstat -l
netstat -lt
netstat -lu
netstat -lx
netstat -s 显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息
7. Linux 之 用户管理
关键词:groupadd
, groupdel
, groupmod
, useradd
, userdel
, usermod
, passwd
, su
, sudo
。
7.1 groupadd
groupadd 命令用于创建一个新的用户组
,新用户组的信息将被添加到系统文件中。
- -g:指定新建工作组的 id。设置组ID,最好不要小于等于1000以下,因为1000内已经有很多系统自带的组。
相关文件:
- /etc/group 组账户信息。
- /etc/gshadow 安全组账户信息。
- /etc/login.defs Shadow密码套件配置。
示例:
$ groupadd -g 344 itholmes
$ less /etc/group
$ tail -1 /etc/group
itholmes:x:344:
7.2 groupdel
groupdel 命令用于删除指定的用户组
,本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
7.3 groupmod
groupmod 命令更改群组识别码(组ID)或名称(组名称)
。
示例:
$ tail -1 /etc/group
itholmes:x:344:
$ groupmod -g 500 -n itholmesNes itholmes
$ tail -1 /etc/group
itholmesNes:x:500:
7.4 useradd
useradd 可用来建立用户帐号
。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中
。
- -r :建立系统帐号。
- -g<群组> 指定用户所属的群组。
- -G<群组> 指定用户所属的附加群组。
- -d<登入目录> 指定用户登入时的起始目录。
- -u<uid> 指定用户ID。
用户组:
- 没有指定组,默认就会根据账号名创建一个一样名字的组,该组的ID是已经上个组自增+1,在/etc/group能看到。
用户目录:
- 没有指定用户目录,默认就是在/home下面创建同名的目录。home是默认创建用户目录的地方。
- 用户对自己的用户目录,有对应的权限,对其他目录,需要根据属主,属组,其他人等权限来判断。通过ll命令或者ls -l命令,来查看。
示例:
$ useradd -d /opt/ -g itholmesGroup -r -u 544 itholmes
小知识点:
- 在使用su切换了用户,可以使用exit来退出当前用户。
7.5 userdel
userdel 命令用于删除给定的用户,以及与用户相关的文件
。若不加选项,则仅删除用户帐号,而不删除相关文件
。
7.6 usermod
usermod 命令用于修改用户的基本信息
。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序
。
- -u<uid> 修改用户ID。
- -d登入目录> 修改用户登入时的目录。
- -g<群组> 修改用户所属的群组。
- -G<群组> 修改用户所属的附加群组。
- -L 锁定用户密码,使密码无效。
示例:
$ usermod -d /home/hnlinux root
$ usermod -u 123 root
7.7 passwd
passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间
等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码
。
示例:
$ passwd -l linuxde
Locking password for user linuxde.
passwd: Success
$ su itholmes
$ passwd -d itholmes
$ passwd -S itholmes
7.8 su
su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
7.9 sudo
7.9.1 sudo使用
sudo 命令用来以其他身份来执行命令,预设的身份为 root(也就是默认是root)。在 /etc/sudoers 中设置了可执行 sudo 指令的用户。
示例:
$ sudo -u userb ls -l
$ sudo -l
$ sudo -L
7.9.2 给普通用户授权 sudo
假设要给普通用户 itholmes 配置 sudo 权限:
/etc/sudoers 文件
存放了 sudo 的相关用户,但是默认是没有写权限的,所以需要设为可写:chmod u+w /etc/sudoers。- 在该文件中添加 itholmes ALL=(ALL) ALL ,保存并退出,让 mary 具有 sudo 的所有权限。
- 再将 /etc/sudoers 的权限恢复到默认状态:chmod u-w /etc/sudoers。
7.9.3 免密码授权 sudo
与给普通用户授权 sudo 类似,区别仅在于第 2 步:mary ALL=(ALL) NOPASSWD: ALL。
8. Linux 之 系统管理
关键词:lsb_release
, reboot
, exit
, shutdown
, date
, mount
, umount
, ps
, kill
, systemctl
, service
, crontab
。
8.1 reboot
reboot 命令用来重新启动正在运行的 Linux 操作系统
。
示例:
reboot
reboot -w
8.2 exit
exit命令用于退出目前的shell(脚本)
。
- exit [状态值] 状态值0代表执行成功,其他值代表执行失败。
示例:
$ exit
8.3 shutdown
shutdown 命令用来系统关机命令
。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
示例:
shutdown -h now
shutdown +5 "System will shutdown after 5 minutes"
8.4 date
date 命令是显示或设置系统时间与日期
。
示例:
date +"%Y-%m-%d"
2009-12-07
date -d "1 day ago" +"%Y-%m-%d"
2012-11-19
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
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
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
date -s 20120523
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"
start=$(date +%s)
nmap man.linuxde.net &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
8.5 mount
mount 命令用于挂载文件系统到指定的挂载点。
- 挂载是将其他机器上的磁盘映射到本机器上来,使得在本机器上可以访问其他机器的文件;如在IP1服务器上可以访问IP2上的资源。
- 软连接是一种快捷方式,这两个区分好!
8.6 umount
umount 命令用于卸载已经挂载的文件系统
。利用设备名或挂载点都能 umount 文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
8.7 ps
ps 命令用于报告当前系统的进程状态。
示例:
ps aux | sort -rnk 4
ps aux | sort -nk 3
8.8 kill
kill 命令用来删除执行中的程序或工作
。预设的信息为 SIGTERM(15),可将指定程序终止
。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序
。
- kill -9 强制杀死, kill 是正常关闭。一般要用kill就行,因为有时就需要正常关闭才行,可以理解为先保存了再关闭!
8.9 service
service 命令是 Redhat Linux 兼容的发行版中用来控制系统服务的实用工具
,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
示例:
service network status
配置设备:
lo eth0
当前的活跃设备:
lo eth0
service network restart
正在关闭接口 eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0: [ 确定 ]
8.10 crontab
crontab 命令被用来提交和管理用户的需要周期性执行的任务
。
详情见:https://www.runoob.com/linux/linux-comm-crontab.html
8.11 systemctl
systemctl 命令是系统服务管理器指令
,它实际上将 service 和 chkconfig 这两个命令组合到一起。
示例:
systemctl start nfs-server.service
systemctl enable nfs-server.service
systemctl disable nfs-server.service
systemctl status nfs-server.service
systemctl restart nfs-server.service
systemctl list -units --type=service
iptables -I INPUT -p tcp --dport 22 -j accept
sudo systemctl status firewalld.service
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
9. Linux 之 软件管理
关键词:rpm
, yum
, apt-get
。
9.1 rpm
rpm 命令是 RPM 软件包的管理工具
。
- 安装rpm包
rpm -ivh xxx.rpm
- 安装.src.rpm 软件包
$ rpm -i xxx.src.rpm
$ cd /usr/src/redhat/SPECS
$ rpmbuild -bp xxx.specs
$ cd /usr/src/redhat/BUILD/xxx/
$ ./configure
$ make
$ make install
- 卸载 rpm 软件包。
- 使用
命令 rpm -e 包名
,包名可以包含版本号等信息,但是不可以有后缀.rpm
有时会出现一些错误或者警告:
… is needed by …
这说明这个软件被其他软件需要,不能随便卸载,可以用 rpm -e --nodeps 强制卸载
。
- 查看与 rpm 包相关的文件和其他信息。
rpm -qa
9.2 yum
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
9.3 apt-get 或 apt
apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具
。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件。
示例:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)