Liunx文件
文件系统
linux文件系统不同于Windows文件系统,其中没有盘符的概念,整个文件系统由根目录开始,所有文件都存放于根目录下,下图为文件系统的示意图(仅列出了部分常用目录)
文件操作
linux文件操作涉及的主要内容如下图所示,主要包含文件类型,文件归属,文件权限,文件链接。
- 查看文件信息
ls -l filename # 查看文件信息
以此文件信息为例 -rw-rw-r–. 2 zhong zhong 4096 junary 21 15:56 Study
文件信息个部分含义如下图所示:
文件类型:- 普通文件
文件权限:
(一共包含9个字符,每3个字符一组,依次构成拥有者、同组用户、其他用户的权限,每一组的3个字符中分别包含读、写和执行权限,其中 - 表示不具备相依权限)
- 拥有者权限:rw- 表示有读、写权限,没有执行权限
- 同组用户权限:rw- 表示有读、写权限,没有执行权限
- 其他用户权限:r-- 表示有读权限,没有写和执行权限
- 设置文件权限
在liunx系统中对于不同的用户,对文件有着不同的操作权限,也决定了不同用户对文件所能执行的操作。
- 文件中的用户
文件中的用户分为,拥有者,同组用户,其他用户
拥有者:文件拥有者
同组用户:与文件拥有者属于同一个组的用户(linux系统在创建用户的时候,默认情况会给我们创建一个用户组,名称与用户名相同)
其他用户:非以上三种以外的用户 - 文件权限表示法
(1)字符表示
rw- 3个字符为一组,分别表示读、写、执行权限,一个文件涉及拥有者、同组用户、其他用户,因此用9个字符表示,如rw-rw-r–
(2)数字表示
rw- 对应3个2进制位,对应位为1表示有权限为0表示没有权限,这样rw- 就表示为110 ,rw-rw-r-- 就表示为110 110 100 ,然后按3个二进制位一组准换为10进制得数字权限表示 664 - 设置文件权限
# 假设当前文件权限为 rw-rw-r--
chmod g-w filename # g:表示同组用户 -:表示去掉某项权限 w:表示写权限
# result: rw-r--r--
chmod o+x filename # o:表示其他用户 +:表示添加某项权限 x:表示执行权限
# result: rw-r----x
chmod a-r filename # a:表示对所有用户 此处操作是去掉所有用户的读权限
# result: -w------x
chmod a=rwx filename # = 直接指定相应权限,对原有权限进行覆盖
# result: rwxrwxrwx
# 注:要改变目录及其内部文件的权限可用递归选项 -R
- 设置文件拥有者和属组
chown new_user filename # new_user:表示新拥有者
chgrp new_group filename # new_group:表示新属组
# 注:要改变目录及其内部文件的权限可用递归选项 -R
- 文件创建
touch filename
vi/vim filename # 此方式创建后必须在vi中保存
- 文件内容追加
echo "context" >> filename #向文件末尾追加内容
- 文件查看
* cat: 查看全部内容,适合内容较少的文件
* more:翻页查看,适合内容较多
* tail:末尾内容,通常与 -f 参数连用,适合查看服务实时动态日志信息
* head:开头内容,适合查看文件格式,内容模板样式
- 创建目录及删除
# 创建目录
mkdir dirname
# 创建多级目录
mkdir -p /xxx/xxx/xxx
# 删除目录
rm dirname # 目录必须为空
rm -rf dirname # 目录可以不为空
- 文件移动及重命名
# 一般格式: mv 源文件 目标(文件/目录)
# 文件移动
mv filename aim_dir
# 文件重命名
mv filename filename2
# 注:目标和源文件在同一目录为重命名,不在同一目录为移动
- 文件链接
链接(类似Windows 快捷方式)
* 软链接 soft link
* 硬链接 hard link
区别:在删除时是否删除源文件
创建软链接文件
ln -s file/dir linkname
ln -s readme.txt rm.txt
使用场景:软链接形式可同步源文件与链接文件,修改源文件是同步到链接文件
创建硬链接文件
ln file/dir linkname (两文件相互独立,相当于文件拷贝)
- 文件搜索
# 一般格式:find 搜索目录 -name 文件名
find dir/ -name filename
find dir/ -name file\* # \*可实现匹配任意字符
Linux用户及用户组
linux系统安装时默认有一个超级管理员用户 root
登陆到Linux系统,运行命令行界面时:
[root@hadoop-senior Desktop] #
root:用户名 hadoop-senior:主机名 Desktop:所在目录名
末尾字符:
#:表示当前用户属于root用户,超级管理员用户
$:表示用户属于普通用户
- 创建及切换用户
# 创建用户(仅限root用户)
useradd 用户名
passwd 密码
# 注:在Linux系统下,默认情况创建一个用户的同时会给用户在系统目录下创建一个属于自己的用户目录,该目录称为用户主目录
# 规则:/home/username Example: /home/zhonglj, 当前用户主目录可以用 ~ 表示
# 切换用户
su - 用户名
# 注意事项:
# root 用户切换到普通用户不需要密码
# 普通用户切换到其他用户需要root密码
- 设置主机名
# 查看主机名
hostname
# 设置主机名(仅限root用户)
hostname 主机名
# 注意事项:此种方式设置主机名,仅仅当前有效,重启系统后会还原原来的主机名
# 原因:在Linux系统中一切皆文件,系统的配置信息都来自文件,这种设置主机名的方式并未写入系统文件
# 永久性设置主机名:(修改配置文件)
vi /etc/sysconfig/network # 修改hostname 为指定主机名
Linux基本命令
* 清屏:#/$ clear
* 当前目录:pwd
* 关机:halt/shutdown
* 重启:reboot/init 6
* 读取linux系统上的文件内容:cat 文件
* linux编辑工具:vi
* 查看当前目录文件:ls
* 文件目录:.一个点代表当前目录
* ..两个点代表上一级目录
* 文件:以.开头的文件为隐藏文件
* 创建文件:touch
* 移动或重命名文件:mv
* 删除文件:rm
* 文件拷贝:cp 源文件 目标路径
* 查找命令所在位置:which 命令
* 查看当前用户的用户名:whoami
* 查看IP地址信息:ifconfig
# 注:具体使用查看 man 帮助
四大远程连接工具
远程连接四要素
* IP地址
* 用户名
* 密码
* 协议 ssh
* 远程命令行
* SecureCRT 注意事项:当第一次远程连接到linux系统时,进入当前用户的主目录
* 远程FTP
* File Transfer Protocol
* FileZilla
* 远程编辑工具
* NotePad++
* UltraEdit
* 远程界面工具
* Xmanager4
主机名与IP地址的映射
hadoop-senior.ibeifeng.com 主机名
192.168.217.110 IP地址
配置文件: /etc/hosts
192.168.217.110(IP地址) hadoop-senior.ibeifeng.com(主机名) hadoop-senior(域名)
系统管理命令
uname # 系统名称
uname -r # 系统版本
cat /proc/cpuinfo # CPU信息
cat /proc/meminfo # 内存信息
date # 查看日期
cal 年份 # 查看日历表
date -s Year-Month-Date
date -s Hour:Min:Sec
df -lh # 查看磁盘占用情况
du -sh dir/ # 预估目录大小
fdisk -l # 查看磁盘信息(root用户)
fsck 设备文件 # 修复磁盘,自动修复(root用户)
mount # 查看挂载磁盘信息(root用户)
mount 设备文件 文件 # 挂载磁盘
umount 设备文件 # 卸载磁盘
free -m # 看系统内存使用情况
top # 各进程内存使用情况
ifconfig # 查看网络信息
ping IP/主机名 # 测试网络是否正常连接
软件安装
1. RPM方式
#### 检查某个软件是否安装
# rpm -qa|grep 软件名
#### 卸载某个软件
# rpm -e --nodeps xxxx
#### 安装软件
# rpm -ivh xxx.rpm
2. tar方式
--------------------------
zip软件
#### 解压
$ unzip xxx.zip
#### 压缩
$ zip xxx.zip filename
tar软件
* 解压
#### 解压到当前目录
$ tar -zxvf xxx.tar.gz
#### 解压到指定目录
$ tar -zxvf xxx.tar.gz -C dir
* 压缩
$ tar -zcvf xxx.tar.gz dir
3. yum方式
* 需要配置源
* 软件包依赖关系以及各个软件的安装顺序
设置普通用户的sudo权限
$ su
# vi /etc/sudoers
#### 在第一行添加如下内容:
用户名 ALL=(root)NOPASSWD:ALL
#### 查看防火墙是否关闭
$ sudo service iptables status
#### 关闭防火墙
$ sudo service iptables stop
#### 启动防火墙
$ sudo service iptables start
#### 永久性设置防火墙关闭/开启
$ sudo chkconfig iptables off/on
#### SELINUX 禁用
$ sudo vi /etc/sysconfig/selinux
#### 修改SELINUX=enforcing 为 SELINUX=disabled 保存
#### 重启系统$ sudo reboot
Linux当中自带的调度功能crontab
针对用户
每个用户都可以调度自己的任务
crontab基本定义
语法:
* * * * * command
说明:
(1)六个字段之间使用空格隔开
(2)字段含义
* * * * *
分:1-59,每10分钟 */10
时:0-23,每两小时 */2
日:1-31
月:1-12
星期:0-6
Example:
#### 每月1,11,21的2:30执行 cmd01
30 2 1,11,21 * * command01
#### 每天20:00至23:00,每半小时执行一次
0,30 20-23 * * * command02
#### 每小时执行一次
* */1 * * * command03
shell基础编程
shell脚本编写
第一行
#!/bin/bash
注释使用 # 号
定义变量
variable_name = value # 变量名符合常规编程语言标识符格式要求
显示变量
echo $variable_name/${variable_name}
清除变量
unset variable_name
显示所有变量
set
环境变量(全局变量),按惯例需要大写
export ZHONG
设置用户环境变量,被设置的用户可用,其他用户不可用
1. 到当前用户主目录下找到./bash_profile
2. vi ./bash_profile 打开文件,在末尾位置添加 export VARIABLE_NAME = value
3. 命令行 source .bash_profile
执行shell脚本的三种方式
4. 直接指定文件路劲 ./test.sh
5. . 文件路径 . test.sh
6. sh 文件路径 sh test.sh