这篇文章主要介绍了Linux系统常用的命令和操作,涵盖文件管理、文件压缩、网络工具、进程管理、权限管理等多个方面。文章条理清晰,内容全面,对于初学者和有需求的用户都很有参考价值。
前言
所谓Shell(壳),一般是指由操作系统提供的,用于计算机用户向操作系统输入相关指令并得到结果的程序。Shell可以字符形式的,也可以是图形界面形式的。
Shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序。
在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell(Command shell)。
基础命令行和Shell都可以操作Linux系统,区别在于基础命令行(ls、cd等),是一种单一的操作;Shell可以比基础命令行更复杂,是一种组合型的操作。相比基础命令拥有了面向过程的概念。
常用命令
命令开头的符号
#
代表root用户;$
代表普通用户。
不同参数之间可以直接简写;如-r -t
可以直接简写成-rt
文件类
ls(目录)
列出目录内容。
参数:-a
显示所有文件,包括隐藏的-l
长格式列出信息-i
显示文件inode
号-t
按修改时间排序-r
按修改时间倒序排序
示例:
按修改时间排序:
# ls -t
按修改时间倒序排序:
# ls -rt
长格式列出:
# ls -l
查看文件inode:
# ls -i file
cat(打印)
连接文件和标准输出打印
参数:-A
查看所有内容-b
显示非空行行号-n
显示所有行行号-T
显示tab
,用^I
表示-E
显示以$
结尾
示例:
连接两个文件:
# cat a z
# cat << EOF
> 999
> ahzoo
> EOF
999
ahzoo
将eof标准输入作为cat标准输出再写到z.txt:
# cat > z.txt << eof
> 999
> ahzoo
> eof
touch(修改)
修改文件或者目录的时间属性。若文件不存在,会自动创建一个新的文件。
参数:
-a
修改文件的读取时间记录。
-m
改修改文件的修改时间记录。
-c
假如文件不存在,不会创建新的文件。与 --no-create
的效果一样
示例:
# touch ahzoo.txt #修改文件时间属性为当前系统时间,若文件不存在则新建
tail(查看)
查看文件的内容,默认显示最后 10 行
参数:
-f
循环读取,常用于查阅正在改变的日志文件
-q
不显示处理信息
-v
显示详细的处理信息
-c<数目>
显示的字节数
-n<行数>
显示文件的尾部 n 行内容
示例:
# tail ahzoo.log # 默认显示最后 10 行
# tail -f ahzoo.log # 持续追踪跟踪ahzoo日志文件的增长情况
# tail -n +10 ahzoo.log # 显示第 10 行至文件末尾的内容
# tail -c 9 ahzoo.log # 显示文件最后9行的内容
wc(统计)
统计文件行数、字节、字符数
参数:-c
打印文件字节数-m
打印文件字符数-l
打印多少行
示例:
# wc -l z.txt #统计文件多少行
cp(复制)
参数:-a
归档-b
目标文件存在创建备份,备份文件是文件名跟~-f
强制复制文件或目录-r
递归复制目录-p
保留原有文件或目录属性-i
覆盖文件之前先询问用户-u
当源文件比目的文件修改时间新时才复制-v
显示复制信息
示例:
复制目录:
# cp -rf test /opt
mkdir(创建)
参数:-p
递归创建目录-v
显示创建过程
示例:
创建多级目录:
# mkdir /opt/test/ahzoo
创建多个目录:
# mkdir {install,tmp}
创建连续目录:
# mkdir {a..z}
mv(移动)
移动文件或重命名
参数:-b
目标文件存在创建备份,备份文件是文件名跟~-u
当源文件比目的文件修改时间新时才移动-v
显示移动信息
示例:
移动文件:
# mv a.txt /opt
重命名文件:
# mv a.txt b.txt
find(查找)
搜索文件目录层次结构
格式:find path -参数 动作
参数:-name
文件名,支持(‘*’, ‘?’, and ‘[]’)
-type
文件类型,d
目录,f
常规文件等-perm
符合权限的文件,比如755-atime -/+n
在n天以内/过去n天被访问过-ctime -/+n
在n天以内/过去n天被修改过-amin -/+n
在n天以内/过去n分钟被访问过-cmin -/+n
在n天以内/过去n分钟被修改过-size -/+n
文件大小 小于/大于 单位(b、k、M、G)-maxdepth levels
目录层次显示的最大深度-regex pattern
文件名匹配正则表达式模式-inum
通过inode编号查找文件
动作:-detele
删除文件-exec command {} \;
执行命令,花括号代表当前文件-ls
列出当前文件,ls -dils
格式-print
完整的文件名并添加一个回车换行符-print0
打印完整的文件名并不添加一个回车换行符-printf format
打印格式
示例:
查找文件名:
# find / -name "*http*"
查找文件名并且文件类型:
# find /tmp -name core -type f -print
查找文件名并且文件类型删除:
# find /tmp -depth -name core -type f -delete
查找当前目录常规文件并查看文件类型:
# find . -type f -exec file '{}' \;
查找文件权限是664:
# find . -perm 664
查找大于1024k的文件:
# find . -size -1024k
查找3天内修改的文件:
# find /bin -ctime -3
排除多个类型的文件:
# find . ! -name "*.sql" ! -name "*.txt"
或条件查找多个类型的文件:
# find . -name '*.sh' -o -name '*.bak'
# find . -regex ".*\.sh|.*\.bak"
# find . -regex ".*\.\(sh\|bak\)"
并且条件查找文件:
# find . -name "*.sql" -a -size +1024k
只显示第一级目录:
# find /etc -type d -maxdepth 1
通过inode编号删除文件:
# rm `find . -inum 671915`
# find . -inum 8651577 -exec rm -i {} \;
rm(删除)
参数:-f
:强制删除,忽略不存在的文件,不提示确认-i
:在删除前需要确认-I
:删除超过三个文件或者递归删除前要求确认-r
:递归删除目录及其内容
示例:
删除文件(需要确认)
# rm a.txt
删除目录(目录不需要确认,目录下文件需要确认)
# rm -r dir1
强制删除目录(不需要确认,慎用)
# rm -rf dir1
删除当前目录下的所有文件及目录
# rm -r *
解压缩类
tar(归档)
功能:归档目录或文件
参数:-c
创建新归档-d
比较归档和文件系统的差异-r
追加文件到归档-t
存档的内容列表-x
提取归档所有文件-C
改变解压目录-f
使用归档文件或设备归档-j
bzip2压缩-z
gzip压缩-v
输出处理过程
示例:
创建归档文件来自foo和bar:
# tar -cf archive.tar foo bar
提取归档的所有文件:
# tar -xf archive.tar
创建归档并gzip压缩:
# tar -zcvf archive.tar.gz log
提取归档文件并gzip解压:
# tar -zxvf log.tar.gz
创建归档并bzip2压缩:
# tar -jcvf log.tar.bz log
列出所有在archive.tar的文件:
# tar -tvf archive.tar
提取归档并解压到指定目录:
# tar -zxvf log.tar.gz -C /opt
zip(压缩)
压缩后的文件拓展名为 .zip
。
常用参数:-d
从压缩文件内删除指定的文件。-g
将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。-j
只保存文件名称及其内容,而不存放任何目录名称。-m
将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。-q
不显示指令执行过程。-r
递归处理,将指定目录下的所有文件和子目录一并处理。-S
包含系统和隐藏文件。-T
检查备份文件内的每个文件是否正确无误。-v
显示指令执行过程或显示版本信息。
-b<工作目录>
指定暂时存放文件的目录。-n<字尾字符串>
不压缩具有特定字尾字符串的文件。-t<日期时间>
把压缩文件的日期设成指定的日期。-<压缩效率>
压缩效率是一个介于1-9的数值,呈正比关系,默认为6。
常用实例:
将/home/html/
这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
# zip -q -r html.zip /home/html
如果在我们在 /home/html
目录下,可以执行以下命令:
# zip -q -r html.zip *
从压缩文件 cp.zip 中删除文件 a.c
# zip -dv cp.zip a.c
uzip(解压缩)
unzip为.zip
压缩文件的解压缩程序。
常用参数:-c
将解压缩的结果显示到屏幕上,并对字符做适当的转换。-f
只更新现有的文件。-l
显示压缩文件内所包含的文件。-p
与-c
参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。-t
检查压缩文件是否正确。-u
与-f
参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。-v
执行是时显示详细的信息。-L
将压缩文件中的全部文件名改为小写。-n
解压缩时不要覆盖原有的文件。-o
解压缩时覆盖原有文件。-P<密码>
使用zip的密码选项。-q
执行时不显示任何信息。
实例:
查看压缩文件中包含的文件:
# unzip -l abc.zip
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files
gzip(压缩/解压)
压缩后的拓展名为.gz
,同样支持.gz
文件的解压。
常用参数:-d
解压缩文件。-f
强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。-l
列出压缩文件的相关信息。-n
压缩文件时,不保存原来的文件名称及时间戳记。-N
压缩文件时,保存原来的文件名称及时间戳记。-q
不显示警告信息。-r
递归处理,将指定目录下的所有文件及子目录一并处理。-t
测试压缩文件是否正确无误。-<压缩效率>
压缩效率是一个介于1-9的数值呈正比关系,默认为6。
实例:
压缩当前目录下所有文件
# gzip *
接上例, 列出详细的信息
# gzip -dv *
a.c.gz: 0.0% -- replaced with a.c
b.h.gz: 0.0% -- replaced with b.h
d.cpp.gz: 0.0% -- replaced with d.cpp
接上例,显示压缩文件的信息
# gzip -l *
compressed uncompressed ratio uncompressed_name
24 0 0.0% a.c
24 0 0.0% b.h
26 0 0.0% d.cpp
guzip(解压缩)
用于解开被 gzip
压缩过的文件(扩展名为.gz
)。由于 gunzip
就是 gzip
的硬连接,所以下面的命令都可以直接使用 gzip
完成
常用参数:-f
强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。-k
保留原始压缩文件。-l
列出压缩文件的相关信息。-n
解压缩文件时,不保存原来的文件名称及时间戳记。-N
解压缩文件时,保存原来的文件名称及时间戳记。-q
不显示警告信息。-r
递归处理,将指定目录下的所有文件及子目录一并处理。-t
测试压缩文件是否正确无误。-v
显示指令执行过程。
实例:
# gunzip ab.gz
系统类
date(日期)
打印或设置系统日期和时间
常用参数:-d string
显示时间所描述的字符串-f datefile
读取文件的每一行-I
输出ISO 8601格式的日期和时间-r
显示文件的最后修改时间-R
输出RFC 2822格式的日期和时间-s string
设置时间所描述的字符串-u
打印或设置UTC时间
常用控制输出格式:%D
日期,等价于%m/%d/%y%F
完整的日期;等价于 %Y-%m-%d%r
本地的 12 小时制时间(例如 11:11:04 PM)%R
24 小时制 的小时与分钟; 等价于 %H:%M%T
时间; 等价于 %H:%M:%S
示例:
设置系统日期和时间:
# date -s "2016-12-15 00:00:00"
查看当前系统时间戳:
# date +%s
查看当前系统时间:
# date +'%F %T'
把日期和时间转换成时间戳:
# date -d "2016-12-15 18:00:00" +%s
把时间戳转成时间:
# date -d '@1481842800' '+%F %T'
uname(系统信息)
打印系统信息
参数:-a
打印所有信息-s
打印内核名称-n
打印主机名-r
打印内核发行版-v
打印内核版本-m
打印机器硬件名-p
打印处理器类型-i
打印硬件平台-o
打印操作系统
示例:
打印所有系统信息:
# uname -a
打印主机名:
# uname -n
打印内核版本:
# uname -r
打印操作系统:
# uname -o
网络类
wget(下载)
非交互式网络下载,类似于HTTP客户端
参数:-b
后台运行
日志记录和输入文件:-o <日志文件>
记录日志写到文件-a <日志文件>
记录日志追加到文件-d
打印debug信息,会包含头信息-q
安静模式,不输出-i <下载文件>
从文件中读取所有的URL地址进行下载(批量下载)
下载文件的url格式:
http://ahzoo.cn/a.txt
http://ahzoo.cn/b.txt
http://ahzoo.cn/c.txt
下载选项:-t, --tries=NUMBER
设置链接重试次数-O
将下载内容写入到指定文件(通常是一个压缩文件)中-nc
跳过下载现有的文件-c
断点续传--progress=TYPE
设置进度条(dot或bar)--spider
不下载任何内容(用于判断url是否可用)-T, --timeout=SECONDS
设置相应超时时间(还有--dns-timeout、--connect-timeout和--read-timeout
)-w, --wait=SECONDS
两次重试间隔等待时间--limit-rate=RATE
限制下载速度--user=USER
设置ftp和http用户名--password=PASS
设置ftp和http密码
目录:-P <文件目录>
保存文件目录
HTTP选项:--http-user=USER
设置http用户名--http-password=PASS
设置http密码--referer=URL
设置Referer-U,--user-agent=AGENT
设置客户端信息--no-http-keep-alive
禁用HTTP keep-alive(长连接)--post-data=STRING
使用POST方法,发送数据
FTP选项:--ftp-user=USER
设置ftp用户名--ftp-password=PASS
设置ftp密码--no-passive-ftp
禁用被动传输模式
示例1:
下载单个文件到当前目录:
# wget http://nginx.org/download/nginx-1.11.7.tar.gz
放到后台下载:
# wget -b http://nginx.org/download/nginx-1.11.7.tar.gz
对于网络不稳定的用户使用-c和--tries参数,保证下载完成,并下载到指定目录:
# wget -t 3 -c http://nginx.org/download/nginx-1.11.7.tar.gz -P down
不下载任何内容,判断URL是否可以访问:
# wget --spider http://nginx.org/download/nginx-1.11.7.tar.gz
下载内容写到文件:
# wget http://www.baidu.com/index.html -O index.html
从文件中读取批量URL下载:
# wget -i url.list
示例2:
下载ftp文件:
# wget --ftp-user=admin --ftp-password=admin ftp://192.168.1.10/ISO/CentOS-6.5-i386-minimal.iso
伪装客户端,指定user-agent和referer下载:
# wget -U "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36" --referer "http://nginx.org/en/download.html" http://nginx.org/download/nginx-1.11.7.tar.gz
查看HTTP头信息:
# wget -S http://nginx.org/download/nginx-1.11.7.tar.gz
# wget --debug http://nginx.org/download/nginx-1.11.7.tar.gz
进程类
nohup(运行)
运行命令,忽略所有挂起信号
示例:
后台运行程序,终端关闭不影响:
# nohup bash test.sh &>test.log &
netstat(网络状态)
功能:打印网络连接、路由表、接口统计信息、伪装连接和多播成员
参数:-r
显示路由表-i
显示接口表-n
不解析名字-p
显示程序名 PID/Program
-l
显示监听的socket
-a
显示所有socket
-o
显示计时器-Z
显示上下文-t
只显示tcp连接-u
只显示udp连接-s
显示每个协议统计信息
示例:
显示所有监听:
# netstat -anltu
显示所有TCP连接:
# netstat -antp
显示所有UDP连接:
# netstat -anup
显示路由表:
# netstat -r
查看当前所有tcp端口
# netstat -ntlp
查看8080端口使用情况
# netstat -ntulp | grep 8080
ss(网络状态)
比netstat更强大的socket查看工具
格式:ss [options] [ FILTER ]
常用参数:-n
不解析名字-a
显示所有socket-l
显示所有监听的socket-o
显示计时器-e
显示socket详细信息-m
显示socket内存使用-p
显示进程使用的socket-i
显示内部TCP信息-s
显示socket使用汇总-t
只显示TCP socket-u
只显示UDP socket
过滤:-o state
显示TCP连接状态信息
示例:
显示所有TCP连接:
# ss -t -a
显示所有UDP连接:
# ss -u –a
显示socket使用汇总:
# ss -s
显示所有建立的连接:
# ss -o state established
显示所有的TIME-WAIT状态:
# ss -o state TIME-WAIT
搜索所有本地进程连接到X Server:
# ss -x src /tmp/.X11-unix/*
lsof(列出文件/进程)
列出打开的文件(进程)
列出打开文件(lists openfiles)也可以表示列出进程。因为在Unix/Linux中,一切(包括网络套接口)都是文件
参数:-i
监听的网络地址,如果没有指定,默认列出所有。-U
列出Unix域socket文件-p
指定PID-u
指定用户名或UID所有打开的文件+D
递归搜索
示例:
列出所有打开的文件:
# lsof
查看哪个进程占用文件:
# lsof /etc/passwd
列出所有打开的监听地址和unix域socket文件:
# lsof -i -U
列出80端口监听的进程:
# lsof -i:80
列出端口1-1024之间的所有进程:
# lsof -i:1-1024
列出所有TCP网络连接:
# lsof -i tcp
列出所有UDP网络连接:
# lsof -i udp
根据文件描述符列出打开的文件:
# lsof -d 1
列出某个目录被打开的文件:
# lsof +D /var/log
列出进程ID打开的文件:
# lsof -p 5373
打开所有登录用户名abc或user id 1234,或PID 123或PID 456:
# lsof -p 123,456 -u 123,abc
列出COMMAND列中包含字符串sshd:
# lsof -c sshd
ps(进程快照)
报告当前进程的快照
常用参数:-a
显示所有进程-u
选择有效的用户ID或名称-x
显示无控制终端的进程-e
显示所有进程-f
全格式-r
只显示运行的进程-T
这个终端的所有进程-p
指定进程ID-m
线程-L
格式化代码列表
示例:
查看指定进程信息
# ps 8080
打印系统上所有进程标准语法:
# ps -ef
打印系统上所有进程BSD语法:
# ps aux
打印进程树:
# ps axjf 或 ps -ejH
查看进程启动的线程:
# ps -Lfp PID
查看当前用户的进程数:
# ps uxm 或 ps -U root -u root u
查找java相关的进程(grep是查找命令)
# ps -ef | grep java
查找8080相关的进程
# ps -ef | grep 8080
top(活动进程)
动态显示活动的进程和系统资源利用率
参数:-d
信息刷新时间间隔-p
只监控指定的进程PID-i
只显示正在使用CPU的进程-H
显示线程-u
只查看指定用户名的进程-b
将输出编排成易处理格式,适合输出到文件处理-n
指定最大循环刷新数
交互命令:f
添加或删除显示的指标c
显示完整命令P
按CPU使用百分比排序M
按驻留内存大小排序T
按进程使用CPU时间排序1
显示每个CPU核心使用率k
终止一个进程
示例:
刷新一次并输出到文件:
# top -b -n 1 > top.log
只显示指定进程的线程:
# top -Hp 123
kill(终止)
参数:1 (HUP)
:重新加载进程。9 (KILL)
:杀死一个进程。15 (TERM)
:正常停止一个进程。
强制杀死进程
强制杀死8080端口进程
# kill -9 8080
同上
# kill -KILL 8080
权限类
chown(文件所有者)
chown(change owner)用于设置文件所有者和文件关联组的命令。
需要超级用户(root)的权限才能执行此命令。
参数 :user
: 新的文件拥有者的使用者 IDgroup
: 新的文件拥有者的使用者组(group)-c
: 显示更改的部分的信息-f
: 忽略错误信息-h
:修复符号链接-v
: 显示详细的处理信息-R
: 处理指定目录以及其子目录下的所有文件
实例:
把 /var/run/httpd.pid 的所有者设置 root:
# chown root /var/run/httpd.pid
将文件 file1.txt 的拥有者设为 ahzoo,群体的使用者 ahzoogroup :
# chown ahzoo:ahzoogroup file1.txt
将当前前目录下的所有文件与子目录的拥有者皆设为 ahzoo,群体的使用者 ahzoogroup:
# chown -R ahzoo:ahzoogroup *
把 /home/ahzoo
的关联组设置为 512 (关联组ID),不改变所有者:
# chown :512 /home/ahzoo
chmod(文件权限)
chmod(change mode)用于控制用户对文件的权限。
同样需要超级用户(root)的权限才能执行此命令。
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
可以使用绝对模式(八进制数字模式)或者符号模式指定文件的权限。
语法(符号模式):
chmod [-参数] [用户类型][操作符][权限] file [file2] [filen]
语法(八进制语法):
chmod [-参数] [八进制数字] file [file2] [filen]
参数:-c
: 若该文件权限确实已经更改,才显示其更改动作-f
: 若该文件权限无法被更改也不要显示错误讯息-v
: 显示权限变更的详细资料-R
: 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u |
user | 文件所有者 |
g |
group | 文件所有者所在组 |
o |
others | 所有其他用户 |
a |
all | 所用用户, 相当于_ugo_ |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ |
为指定的用户类型增加权限 |
- |
去除指定用户类型的权限 |
= |
设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r |
读 | 设置为可读权限 |
w |
写 | 设置为可写权限 |
x |
执行权限 | 设置为可执行权限 |
X |
特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s |
setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t |
粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
实例:
将文件 ahzoo.txt 设为所有人皆可读取 :
# chmod ugo+r ahzoo.txt
将文件 ahzoo.txt 设为所有人皆可读取 :
# chmod a+r ahzoo.txt
将文件 ahzoo.txt 与 999.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
# chmod ug+w,o-w ahzoo.txt 999.txt
为 ahzoo.java 文件拥有者增加可执行权限:
# chmod u+x ahzoo.java
将目前目录下的所有文件与子目录皆设为任何人可读取 :
# chmod -R a+r *
八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User) 的读、写、执行;用户组(Group) 的读、写、执行以及其它用户(Other) 的读、写、执行。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r-- | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | --x | 001 |
0 | 无 | --- | 000 |
说明:
# chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
**r=4,w=2,x=1**
- 若要 rwx 属性则 4+2+1=7;
- 若要 rw- 属性则 4+2=6;
- 若要 r-x 属性则 4+1=5。
chmod a=rwx file
和chmod 777 file
效果相同。chmod ug=rwx,o=x file
和chmod 771 file
效果相同。
例如, 765 将这样解释:
- 所有者的权限用数字表达:所有者的三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
- 用户组的权限用数字表达:用户组的三个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
- 其它用户的权限数字表达:其它用户权限位的三个数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
此外,若用 chmod 4755 filename 可使此程序具有 root 的权限。
对比:
用符号模式将目前目录下的所有文件与子目录皆设为任何人可读取 :
# chmod -R a+r *
等同于用数字(八进制语法)来表示同样的权限 :
# chmod 777 file
防火墙
firewall
开启防火墙
# systemctl start firewalld
开放指定端口(8080)
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含义:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
关闭指定端口(8080)
# firewall-cmd --zone=public --remove-port=8080/tcp --permanent
重启防火墙
# firewall-cmd --reload
查看防火墙所有开放的端口
# firewall-cmd --zone=public --list-ports
关闭防火墙
# systemctl stop firewalld.service
查看防火墙状态
# firewall-cmd --state
查询指定端口(8080)是否开启成功
# firewall-cmd --query-port=8080/tcp
iptables
安装命令:
# yum install iptables-services
防火墙
查询防火墙状态:
# service iptables status
停止防火墙:
# service iptables stop
启动防火墙:
# service iptables start
重启防火墙:
# service iptables restart
端口(配置文件)
由于防火墙规则的配置文件在/etc/sysconfig/iptables
路径,所以我们可以直接对配置文件进行修改。
打开配置文件:
# vi /etc/sysconfig/iptables
直接在配置文件中修改(开启8080端口):
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
关闭端口:只需要在上面的配置文件中删除添加的端口即可
端口(命令)
开启22端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
查看端口是否开启:
iptables -L -n
保存配置:
service iptables save
文件传输
需要安装:
# yum -y install lrzsz
- 将当前客户端文件上传到linux
# lz
- 将linux文件下载到当前客户端
sz filename
1
后面的用的少。。前面文件我用的最多是了。。
1
初略的看完了