linux文件系统常用管理操作命令
Linux系统文件系统目录结构:
约定俗成:
bin (binaries)存放二进制可执行文件
boot 存放用于系统引导时使用的各种文件
dev (devices)用于存放设备文件
etc (etcetera)存放系统配置文件
home 存放用户文件的根目录
lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
sbin (super user binaries)存放二进制可执行文件,只有root才能访问
usr (unix shared resources)用于存放共享的系统资源
var (variable)用于存放运行时需要改变数据的文件
tmp (temporary)用于存放各种临时文件
root 超级用户目录
mnt (mount)系统管理员安装临时文件系统的安装点
注意:其中bin、home、usr、etc这四个目录比较重要
基本命令
tips:输入命令的时候多用tab键来补全,一方面可以加快速度,另一方面减少错误
文件夹操作
ls /path/ 查看目录信息(ls表示list,即显示目录)
ls -l /path/ 查看详细信息(显示长列表格式,l表示long),等价于 ll
ls –a /path/ 查看隐藏文件(a表示all,显示所有文件)
路径的表示方法有“相对路径”和“绝对路径”,比如,如果当前所处目录为 /home/itcast,要查看/home目录下的信息,可以有两种方法:
ls ../ (只有在确定目录层级时才能使用,因为../表示返回上一级目录)
ls /home
pwd 查看当前所处目录的绝对路径(Print Working Directory)
cd /path 切换目录 (cd /) ,如果不带参数则切换到用户主目录(change directory)
mkdir ./test 创建文件夹(make directory)
mkdir -p a/b/c 如果要创建的文件夹的父目录不存在,则自动创建(参数P代表parents)
rmdir 删除空文件夹 (只能删除空文件夹,remove directory)
rm -r /a/b (删除非空文件夹,-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;recursive)
删除文件
rm filename (rm -r 删除文件夹;rm -rf 强制删除文件或文件夹)!!!慎用
创建文件
常见的3种方式:
touch x.文件格式(a.txt、b.jpg…..) 创建一个空文件
echo “hello linux” 在控制台打印语句
echo “hello linux” > a.txt把“>”左边的输出放到右边的文件里去(”>“前可以随便编写语句,最终意思是,将”>”前语句的输出结果写入”>”右侧文件中,如果右侧文件不存在,则创建)
echo “hello linux” >> a.txt把“>”左边的输出追加到右边的文件里去
vi blabla.txt 用文本编辑器编辑一个文件并且保存,如果文件不存在,则创建,如果进入后无法编辑,先点击i表示进入insert模式,之后即可进行编辑,编辑完成后点击Esc退出insert模式,然后输出括号内语句{:wq},意思是,write quit输入结束
移动文件、修改文件名
mv a/wenjian1.txt b/file1.txt (移动文件的同时还修改了文件名,move,将a目录下的文件wenjian1.txt移动到b目录下,并且改名为file1.txt—-需要输入需要移动的文件的具体路径,准备移动的目标路径及文件)
拷贝文件
cp a/a.txt b/b.txt(将a目录下的文件a.txt复制到b目录下的b.txt文件中,如果文件b.txt不存在则创建)
查看文本文件内容
cat log.a.txt 一次性显示整个文件内容
more log.a.txt 可以分页看(翻页:空格,往回翻:b ,退出: q或者 Ctrl+C)
less log.a.txt 不仅可以分页,还可以方便地搜索,回翻等操作(翻页:空格,往回翻:↑,往下翻:↓,退出:q)
tail -10 log.a.txt 查看文件的尾部的10行
tail -f user.log 实时刷新显示文件的尾部,这条命令对于观察调试程序的运行非常重要(follow)
head -20 log.a.txt 查看文件的头部20行
文件归档压缩(1:打包–归档; 2:压缩)
打包/解包
tar -cvf testdir.tar testdir/
参数c :create表示创建一个打包文档
v:显示打包的进度
f:表示要打成的tar包的名字
testdir.tar:表示打完的包名
testdir/:表示需要被打包的文件
tar –xvf testdir.tar
参数x:表示从一个现存的tar文件中进行解包操作
一般解压到当前目录
压缩/解压
gzip testdir.tar (将名字为testdir.tar的tar包进行压缩—-压缩之后,源文件消失)
gzip –d testdir.tar.gz(decompress或—-uncompress:解开压缩文件;;将名字叫做testdir.tar.gz的压缩包进行解压—-解压之后,源文件消失)
归档并压缩/解压
tar -zcvf testdir.tar.gz testdir.tar(创建一个归档并压缩后的文件,名为testdir.tar.gz,将名为testdir.tar归档并压缩;z表示压缩/解压,cvf表示打包)
tar -zxvf testdir.tar.gz(将名为testdir.tar.gz的文件解包并解压到当前目录;z表示压缩/解压,xvf表示解包)
tar -zxvf testdir.tar.gz -C Downloads/ 解压到指定的Downloads目录下
还有中简单的方法
zip testdir.zip testdir.tar(将文件testdir.tar打包压缩到testdir.zip文件中,如果testdir.zip文件不存在,则创建这个文件)
unzip testdir.zip(将压缩包testdir.zip解包并解压)
文件权限管理
- linux系统中对文件权限的描述机制(r:read;w:write;x:execute执行):
d r w x r w x r - x
类型 拥有者 所属组 其他人
权限信息可以表示为3组二进制符号: 111 111 101
进而可以表示为3个十进制数: 7 7 5
第一个huihui是指这个文件属于huihui这个用户,第二个huihui是huihui这个组的成员对于这个文件拥有的权限 - 修改权限
chmod u+rwx file 为file添加或取消所属用户的权限
(u代表所属用户user o代表其他用户otheruser g代表所属组的成员用户group)
chmod 567 file 用数字也可以表示权限
5 —> 101 —> r-x
6 —> 110 —> rw-
7 —> 111 —> rwx - 通过实例理解rwx三种权限的含义
r 对文件:是否可以读取文件的内容 cat
对文件夹:是否可以列出文件夹内的子节点信息 ls
w 对文件:是否可以修改文件的内容 >> vi/echo
对文件夹:是否可以更改文件夹的子节点 mkdir/mk
x 对文件:是否可当做一个命令或者程序来执行
对文件夹:是否可cd进入 - 修改文件的所有者owner
只能由root权限才能操作
chown root:root file (将file的所有者改成root用户,所属组改成root组)
用户管理
- Linux用户分类:
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户:(UID在1到499)
系统和服务相关的:bin、daemon、shutdown等
进程相关的:mail、news、games等
伪用户不能登陆系统,而且没有宿主目录
添加用户(添加用户一般只能用root来操作)
基本示例:
useradd huihui123
必须设置密码才能正常登陆 passwd huihui123
参数手册:
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
删除用户
userdel 用户名—-这样删除的时候,用户的主目录会被保留
userdel -r huihui123 —–删除用户的同时删除用户的主目录
修改用户属性
指令:usermod(mod是modify修改)
参数:
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 修改组(group) usermod -g 更改后的目标组 需要被修改的用户
-d 修改用户的宿主目录(directory一般没用) -d 路径 需要被修改的用户
-G添加多个组 usermod -G 组1,组2…. 需要被修改的用户
-L 锁定用户账号密码(Lock)
-U 解锁用户账号(Unlock)
用户组管理
- 用户组相关属性:
每个用户至少属于一个用户组
(创建新用户时如果不指定所属组,则会自动创建并归属到一个跟用户名同名的组)
每个用户组可以包含多个用户
同一个用户组的用户享有该组共有的权限 - 用户组管理操作命令:
1、创建用户组
groupadd 组名
2、删除用户组
groupdel 组名
3、修改用户组属性
groupmod –n 新组名 旧组名
4、查看用所属的组
groups 用户名
用户及用户组相关配置文件
- 用户配置信息存放位置:
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
passwd文件示例:
huihui:x:500:500:itcast:/home/huihui:/bin/bash
passwd文件各字段含义:
account:password:UID:GID:GECOS:directory:shell - 用户组配置信息存放位置:
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow(设置组管理员时才有用)
网络配置管理
网卡地址配置
检查网络连通性:
ping destip
查看ip地址
ifconfig 查看所有网络设备的地址信息
ifconfig eth0 查看指定的eth0以太网卡的地址信息
修改ip地址
ifconfig eth0 192.168.2.150 netmask 255.255.255.0
通过setup修改网络配置
在root权限下执行setup指令可以打开一个带菜单的伪图形界面来修改网络配置
通过配置文件修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改该配置文件即可改ip地址
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0c:29:f1:b2:e8 #网卡物理地址
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="b3cd1ac3-aecf-4845-9812-9337135c072b"
IPADDR=192.168.2.199 # IP地址
NETMASK=255.255.255.0 #子网掩码
DNS2=8.8.8.8 #域名服务器2
GATEWAY=192.168.2.1 #网关
DNS1=192.168.2.1 #域名服务器1
USERCTL=no
修改完ip之后可以重启网络服务器:service network restart
主机名配置管理
在实际中,一个业务系统的服务器数量众多,服务器节点之间通信时使用主机名来标识比用ip地址更方便,但TCP/IP协议的寻址最终是通过IP来进行,因此,如果采用域名(主机名)来进行通信时需要一个“域名(主机名)——IP”的映射机制;
主机名管理
1、查看主机名
在shell提示符的@后有显示
或者用hostname指令打印出主机名
2、修改主机名
vi /etc/sysconfig/network 修改其中的hostname配置项:
HOSTNAME= hostnamenew
修改完成之后要重启服务器才能生效:reboot
要想立即生效,可以执行指令 hostname hostnamenew ,然后注销重登陆主机名-IP映射
1、DNS
公网上有现成的DNS服务器,但是不能解析内网的私有域名(主机名),因而需要配置公司内部的私有DNS服务器,成本相对较高,实现起来比较麻烦
2、服务器本地映射
服务器网络寻址时默认是现在本地的hosts文件中查找IP映射,通过修改hosts来映射局域网内部的主机名非常方便
实现方法,将局域网内的每一台主机的“hostnamip”写入每一台主机的hosts文件中:
vi /etc/hosts
192.168.75.128 huihui-server-01
网络服务启动与停止
- 列出系统所有应用服务状态
service –status-all - 查看指定服务运行状态:
service servicename status - 启动服务:
service servicename start - 停止服务:
service servicename stop - 列出所有服务的随机自起配置:
chkconfig –list
Proto:protocol指的协议
Recv-Q:receive接收的数据包的量
Send-Q:发送的数据包的量
Local Address:本地地址,也叫源地址,一般都是本机ip
Foreign Address:目标地址
State:状态
PID/Program name:进程的ip和对应程序的名称 - 列出指定服务的自起配置:
chkconfig 服务名 –list - 关闭服务的随机自起:
chkconfig servicename off - 开启服务的随机自起:
chkconfig servicename on - 常用示例:
重启网络服务: service network restart
停止httpd这个服务器: service httpd stop
启动httpd这个服务器: service httpd start
关闭防火墙服务: service iptables stop
关闭防火墙自动启动: chkconfig iptables off
查看网络连接信息
指令:netstat
netstat常用指令:
netstat -natp:查看所有tcp协议的信息,n:net;a:all;tp:tcp/ip
netstat -nltp:查看监听状态的tcp协议的信息,n:net;l:list;tp:tcp/ip
netstat -naup:查看所有udp协议的信息,n:net;a:all;up:udp
常用参数解释:
-a 显示所有连接和监听端口
-l 只显示监听进程
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名如何通过浏览器访问到linux服务器
开启httpd服务:service httpd start
关闭防火墙:chkconfig iptables off
以上两个操作即可这里总结一下
开启/关闭/查看服务用service
开启/关闭/查看自启信息用chkconfig
常用系统管理指令
磁盘/内存使用信息查看
df 查看磁盘空间状态信息(disk free,不带单位)
df -h 查看磁盘空间状态信息(disk free,-h显示的就是带单位的磁盘大小)
du -s /* 查看根目录下一级的所有文件的汇总大小(s:summerise综述)
du -sh * 查看指定目录下所有子目录和文件的汇总大小 (disk useage)
free 查看内存使用状况
进程管理
e 显示所有进程(-e all processes )
f 全格式(-f full)
参数也可分开写,如ps -e -f,但不能连在一起,如ps -e-f,就会报错
top 查看实时刷新的系统进程信息
ps -ef 查看系统中当前瞬间的进程信息快照(Process Status)
ps -ef | grep myshell.sh 搜索myshell进程的信息
kill -9 进程id: 杀掉进程 (-9 表示强制杀死)
sudo权限的配置
root用户因为具有不受限制的权限,使用不慎可能对系统造成不可估量的损害,因而,生产实际中,轻易不要使用su去切换到root的身份
如果普通用户需要使用一些系统级管理命令,可以使用sudo来执行,比如 sudo vi /etc/profile
给普通用户赋予sudo权限,配置方法如下:
例如,要给hadoop用户赋予sudo任何指令(或某条指定的命令)的权利,则编辑sudoers文件 vi /etc/sudoers
在其中加入需要赋予权限的用户
root ALL=(ALL) ALL
// 以下为需要赋予权限的用户
#让hadoop用户可以用root身份执行所有指令
hadoop ALL=(ALL) ALL
#让huihui用户可以用root身份执行所有指令
huihui ALL=(root) /usr/sbin/useradd, /usr/bin/passwd
检查是否生效:
[root@huihui-server-01 huihui]# sudo -lU huihui (这里的U是大写)
User huihui is not allowed to run sudo on huihui-server-01.
常用工具指令
- vi 编辑器
linux系统中最通用的文本编辑器
vi hello.world 进入文件编辑
进去之后处于非编辑模式,此时,要按一个i进入insert模式
在insert模式下,可以跟普通文本编辑器一样编辑内容
编辑完成之后,先按Esc退出insert模式,进入非编辑模式
然后再按 :进入底行命令模式,在底行命令中敲入wq并回车,即可保存
如果想不保存退出,底行命令就用 q!
(保存文件的另一种模式: 编辑完后按Esc退出insert模式,然后直接按快捷键保存—— shift + zz)
撤销:切换到一般模式按u
行的删除:dd
删除指定数量的行:数量 dd - 修改系统的默认启动级别
vi /etc/inittab
# 0 - halt (Do NOT set initdefault to this) 关机
# 1 - Single user mode 单用户模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 多用户,但不支持NFS(网络文件系统)
# 3 - Full multiuser mode 完整的多用户模式(服务器上用到最多的不带图形界面)
# 4 - unused 未定义
# 5 - X11 图形界面
# 6 - reboot (Do NOT set initdefault to this) 重启
#
id:3:initdefault:
~
用level 3 就启动全功能状态的字符界面
在命令行模式下,用startx可以手动启动图形界面(在服务器上操作)
- 其他指令
1、grep
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本内容,并把匹配的行打印出来
示例:
grep ‘EOF’ ./*
grep -c‘EOF’ ./* 显示匹配到的总个数(c:count)
grep -r ‘EOF’ ./* 指定对子目录也进行搜索(r:recursive)
grep -l ‘EOF’ ./* 只显示命中的文件名(l:list)
grep -n ‘EOF’ ./* 显示命中的行号(n:number)
grep -lr ‘EOF’ ./* 显示命中的文件名及子文件名
grep -ld skip ‘EOF’ ./* 显示指定不要搜索子文件夹
参数含义:
-r 递归搜索子目录
-l 只列出有匹配行的文件名
-n 列出匹配行的行号
-d skip 不搜索子文件夹
常用grep跟其他命令组合使用来查找我们关心的信息
示例:
service –status-all | grep ‘httpd’ 从前面的结果中找出httpd的结果
netstat -nltp | grep ‘22’
2、find
强大的查找工具,可根据文件名,文件所有者,创建时间,文件大小,文件类型,文件权限信息等各种条件来查找匹配的文件,功能非常强大,以下列出的是常用的几种示例:
按照文件名称查找(可支持正则表达式)
find ./ -name ‘*.txt’
find ./ -name ‘install*’
按照文件类型查找
find ./ -type f 按类型查找
find ./ -type l 查找链接
3、wc (wordcount)
统计文本信息(行数,词数,字符数)
wc -c/w/l/
4、其他
date 查看或者修改系统的日期和时间
最常用参数示例:
date
date “+%Y%m%d”
date -s “2020-12-20 10:56:00”
echo 输出字符串或者变量的值
echo strwhoami查询当前登陆者的身份which查询指定命令的 s t r w h o a m i 查 询 当 前 登 陆 者 的 身 份 w h i c h 查 询 指 定 命 令 的 PATH路径