linux基础
Posted lizitest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础相关的知识,希望对你有一定的参考价值。
Linux系统
? centOS6.9
? centOS7.4
Linux哲学
? 一切接文件
CentOS下载
? https://wiki.cnetos.org/Download
? http://mirrors.aliyun.com
? http://mirrors.sohu.com
? http://mirrors.163.com
虚拟机软件
? VMware
Linux远程管理工具
? SecureCRT
? Xmanager
Linux系统
? 只有一个根目录,根目录下包含其他文件夹
? tmp:放临时文件
? usr:相当于Win系统中的Windows、Program files的组合
? etc:放配置文件
? boot:放启动相关文件,如:Kernel
? bin:二进制文件
Linux系统分区:
? mount:把分区挂载到文件夹下就可以了(就是给分区起个文件夹名)
? 文件夹叫挂载点
swap虚拟内存分区:
? 内存不足时,使用此块分区
我们分区:
? /:根分区(50G)
? boot:引导分区(500M)
? swap:虚拟内存(测试:原内存大小*2;生产:8或16G)
? Data:测试使用(60G)
分区类型
? 主分区:一块硬盘最多4个主分区,可以存数据
? 扩展分区:一块硬盘最多1个扩展分区,可以没有,不可以存数据。划分成逻辑分区后可以存数据。
逻辑分区:扩展分区中被划分出来的,可以存数据。
上下文切换:CPU工作在User Space和Kernel Space来回切换
? 切换时,必须保留原来的状态
? 上下文切换是需要成本的,应该减少
? User Space不能调用系统资源,如:内存
? Kernel Space可以调用一切系统资源
虚拟机安装:
? Windows的fat分区不支持4G以上的文件,可以转换分区为NTFS格式
? Windows分区转换命令:convert f:/fs:ntfs
单位换算:
1K=1024
1M=1024K
1G=1024M
1T=1024G
1P=1024T
1E=1024P
简单命令
? 查看CPU:scpu
? 查看内存:free -h
? 查看内存:cat /proc/meminfo
? 查看硬盘:sblk
? 查看网卡:ifconfig
? 查看Linux版本:cat /etc/centos-release
? 查看Linux版本:lsb_release -a
? 查看Linux版本内核:uname -r
? 查看都有谁正在登陆:who
? 查看我是谁:who am I
? 查看都有谁登录,在做什么操作:w
? 查看当前用户shell类型:echo $SHELL
? 查看系统支持的shell类型:cat /etc/shells
? 查看主机名:hostname
? 查看Linux系统提示:echo $PS1
? 修改Linux系统提示:PS1="[[email protected]h]"
? 区分生产环境:PS1="[e[1;36m][[email protected]h W]\\$[e[0m]"
? 查看当前位置:pwd
? 修改系统提示文件:
○ root用户:vim .bash_profile(/root目录)
○ 非root用户:vim .bash_profile(/home目录)
? 内部命令:集成在shell里面(/bin/bash),已经加载到内存中,效率高
? 外部命令:是独立的文件
? 查看系统有多少个内部命令:enable
? 查看系统内部命令的用法:help
? 判断命令类型:type 命令
? 系统如何查找外部命令:
○ echo $PATH
○ 在以下文件中找:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
? 外部命令路径信息:which 命令
? 文件路径及相关文档路径:whereis 文件
? 系统查找命令方法:
○ 第一次去磁盘上找,并把命令hash到内存
○ 第二次去内存找
? 查看被hash的命令:hash
? 别名:
○ 经常cd /etc/sysconfig/network-scripts/
○ 更改家目录中的.bashrc文件,alias cdnet="cd /etc/sysconfig/network-scripts/"
○ 以后直接cdnet
? 查看系统中别名:alias
? 别名有效性:
○ /root/.bashrc:对root用户生效
○ /home/test/.bashrc:对test用户生效
○ /etc/.bashrc:对所有目录生效
? 修改文件生效:
○ 执行:. .bashrc
○ 执行:source .bashrc
? 解决别名与原始命令冲突
○ 原始文件加单引号:‘hostname‘
○ 原始文件加双引号:"hostname"
○ 原始文件加斜线:hostname
○ 路径执行原始文件:/usr/bin/hostname
○ 加command命令:command hostname
? 退出操作:
○ ctrl + c:强行退出
○ ctrl + d:正常退出
? 命令换行:使用斜线 ‘‘
? Linux时间:
○ 硬件时间:clock
○ 系统时间:date
○ 修改系统时间:030710102018.30(月日小时分年.秒)
○ 系统时间覆盖硬件时间:clock -w
○ 硬件时间覆盖系统时间:clock -s
○ 同步网络服务器时间:
§ 1 执行命令:ntpdate 172.16.0.1
§ 2 修改文件:vim /etc/ntp.conf,添加server 172.16.0.1 iburst
§ 3 使服务生效:
□ systemctl start ntpd(CenOS7)
□ service ntpd start(CentOS6)
? 修改CentOS7的网卡名称:
○ vim /boot/grub2/grub.cfg
○ 在linux16后加上net.ifnames=0
○ 重启系统:reboot
? 时区:
○ 文件:/etc/localtime
○ 东八区:CTS
? 日历:
○ 当月:cal
○ 一年:cal -y
? 关机:
○ halt
○ poweroff
? 重启:
○ reboot
○ -f:强制,不调用shutdown
○ -p:切断电源
? 关机或重启:shutdown [OPTION]… TIME [MESSAGE]
○ -r:reboot
○ -h:halt
○ -c:cancel
○ TIME:
§ now:立刻关机
§ +m:几分钟之后关机
§ hh:mm:指定时间关机
? screen:共享桌面(光盘中自带)
○ 查看光盘挂在文件:lsblk
○ cd /run/media/root/CentOS 7 x86_64/Packages/
○ rpm -ivh /run/media/root/CentOS 7 x86_64/Packages/screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
§ 共享:
□ 左边:screen -S helpme
□ 右边:
? 查看:screen -ls
? 加入:screen -x helpme
? 退出:exit
? echo:
○ 显示字符串
○ 显示变量:echo "$PATH"
○ 直接显示:echo ‘$100‘
○ 八进制:echo -e ‘ 101‘ (输出A)
○ 十六进制:echo -e ‘x41‘ (输出A)
? Linux计算器:bc
? 命令结果闪烁:
○ 外边双引号,命令用反向单引号(波浪线按钮)
○ echo -e " 33[43;31;5m `hostname` 33[0m"
? 引号总结:
○ 单引号:字符串(最傻)
○ 双引号:不认识命令,能识别变量
○ 反向单引号:命令(最聪明)
○ 大括号:组合
? 文件:
○ 创建文件:touch file
○ ll file
○ 创建大量文件:touch /data/file{1,2,3}.{txt}
○ 创建带日期的文件:touch /data/`date +%F`.log
? 历史命令:
○ 查看历史命令:history
○ 正常退出时,内存中命令写到家目录的.bash_history
○ 重新执行命令:!226(!历史命令id)
○ 历史命令保存个数
§ 默认:1000 - echo $HISTSIZE
§ 修改:/etc/profile中修改HISTSIZE
? 帮助
○ whatis + 命令:简单
○ man
○ help
? 帮助实践
○ 查看命令类型:
§ type + 命令
§ 或which + 命令(buildin是内部命令)
§ 内部命令帮助:help + 命令
§ 外部命令帮助:命令 --help
○ /usr/share/docl目录下,有已安装内容的帮助
○ Python官网:http://www.python.org
○ Linux官网:
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com
○ 网站:
http://tldp.org
http://www.slideshare.net
http://www.google.com
○ 检索方法:
Openstack filetype:pdf
rhca site:redhat.com/docs
? 目录结构:
?/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
?/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
?/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
?/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
?/lib64:专用于x86_64系统上的辅助共享库文件存放位置
?/etc:配置文件目录
?/home/USERNAME:普通用户家目录
?/root:管理员的家目录
?/media:便携式移动设备挂载点
?/mnt:临时文件系统挂载点
?/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
?/opt:第三方应用程序的安装位置
?/srv:系统上运行的服务用到的数据
?/tmp:临时文件存储位置
?/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
?/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
?/proc: 用于输出内核与进程信息相关的虚拟文件系统
?/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
?/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
? 文件类型:
?-:普通文件
?d: 目录文件
?b: 块设备
?c: 字符设备
?l: 符号链接文件
?p: 管道文件pipe
?s: 套接字文件socket
? pwd: printing working directory
-P 显示真实物理路径
-L 显示链接路径(默认)
? 相对路径:相对当前位置的路径
? 绝对路径:路径写全了
? 上级目录:..
? 当前目录:.
? 获取当前位置:pwd
? 获取文件名:basename /usr/bin/ls - 结果:ls
? 获取文件夹名:dirname /user/bin/ls - 结果:/usr/bin
? 更换目录:
○ cd:回到家目录
○ cd -:回到刚刚的目录
○ cd ~wang:回到普通用户的家目录
? ls [options] [files_or_dirs]
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
? 文件时间
○ access time:访问时间。最后一次读取文件的时间(关闭,可以提省性能5%)
○ modify time:修改时间。改变文件内容的时间
○ change time:改变时间。改变原数据的时间(文件属性)
○ ll --time=ctime file
○ stat file:查看file文件全部时间
? 文件通配符
?* 匹配零个或多个字符
?? 匹配任何单个字符
?~ 当前用户家目录
?~mage 用户mage家目录
?~+ 当前工作目录
?~- 前一个工作目录
?[0-9] 匹配数字范围
?[a-z]:字母
?[A-Z]:字母
?[wang] 匹配列表中的任何的一个字符
?[^wang] 匹配列表中的所有字符以外的字符
? 预定义字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
? 创建文件:touch 文件名
? 拷贝文件:
○ cp file1 /dir/
○ cp -p file1 /dir/(保留权限、所有者、时间戳属性)
○ cp -a file1 /dir/(保留所有属性)
○ cp /dir1/file1 /dir2/file2 /dir3/(复制多个文件到dir3)
○ cp -r /dir1/ /dir2/(复制文件夹)
○ cp -a /dir1/ /dir2/(复制文件夹,且复制属性)
○ cp -av /dir1/ /dir2/(复制文件夹,且复制属性,且显示复制过程)
? 移动文件:(剪切)
○ mv file1 /data/
? 删除文件:rm
○ 一般不适用,可以移动到特定目录中
? CentOS7修改
○ 锁屏
○ 网卡名:/boot/grub2/grub.cfg
? rm命令配置:
? alias rm="mv -t /backups/" 垃圾桶**
? tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
? mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
? rmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
? rm -r 递归删除目录树
? 文件存储:
○ 节点表(属性表):
§ 直接指针:可以指向4K大小的数据
§ 间接指针:可以指向4k*1024=4M大小的数据
§ 双重间接指针:可以指向4k*1024*1024=4G大小的数据
§ 三重间接指针:可以执行4T大小数据
? 文件和数据:
○ /dir/file1
○ /dir/file2
○ inode table中保存dir的 > file1的数据有inode num > inode table中找打file1对应的inode num > 再由指针指向数据
○ 查看目录下问价节点编号:ls -i
○ 查看目录最大节点编号:df -i (节点编号耗尽,不能新建文件)
○ 同一分区移动数据,节点编号不变;不同分区移动数据,节点编号变化
? 生成大的文件:
○ 100M大小的文件:dd if=/dev/zero of=bigfile bs=1M count=100
? 有人在用文件,怎么删除?
○ 安全的删除:> /dir/file 这样才能腾出空间
? 硬链接:同一分区下,一个节点编号对应多个文件(不能跨设备、跨分区,实际就是一个文件两个名)
○ ln f1 f11
○ f1和f11是同一个文件
○ 删除f1,f11还在,删除只是删除名字
? 软连接:相当于快捷方式。可以跨分区
○ ln -s f2 /root/f2
○ 软连接和被连接文件的节点编号不同
○ 软连接文件大小就是文件名字大小
? 硬链接和软连接的区别:
1、硬链接不能跨分区
2、硬链接inode number一样
3、硬链接的链接数会增长
4、硬链接不支持文件夹
5、硬链接删除原始文件,还可以访问
? 硬链接和软连接根本区别:
硬链接本质是一个文件,多个名字
软链接本质是多个不同文件
ntpdate serverip
vim /etc/ntp.conf
server serverip iburst
centos6
server ntpd start
chkconfig ntpd on 开机自动启动
centos7
systemctl start ntpd
systemctl enable ntpd 开机自动启动
? 分析文件类型:file
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
--help 显示命令在线帮助
? 输入输出
○ 0标准输出:stdout。默认输出到当前窗口,修改默认输出位置叫重定向
○ 1标准错误:stderr。
○ 2标准输入:键盘是标准输入设备。
○ 文件:ls /proc/$s/fd -l
○ 重定向:
§ echo "hello" > /dev/pts/2
§ ls > /data/lsout 重定向到文件(覆盖)
§ ls >> /data/lsout 追加文件
§ 正确信息和错误信息分开存放:ls /etc/centos-release /etc/noexist > /data/1.log 2> /data/2.log
§ 正确信息和错误信息写在一个文件:ls /etc/centos-release /etc/noexist &> /data/all.log
§ 标准输入用文件:
□ tr ‘a-z‘ ‘A-Z‘ < f1 (文件f1作为输入并进行大小写处理)
□ tr ‘a-z‘ ‘A-Z‘ < f1 > f2(文件f1作为输入并进行大小写处理,并重定向到f2)
§ 多行重定向发送给stdin
使用“<<终止词”命令从键盘把多行重导向给STDIN
?直到 终止词 位置的所有文本都发送给STDIN
?有时被称为就地文本(heretext)
mail -s "Please Call" [email protected] <<END
> Hi Wang,
>
> Please give me a call when you get in. We may need
> to do some maintenance on server1.
>
> Details when you‘re on-site
> Zhang
> END
? 管道 |:第一个命令的标准输出作为第二个命令的标准输入
命令1 | 命令2 | 命令3 | …
?将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
?STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
?最后一个命令会在当前shell进程的子shell进程中执行用来
?组合多种工具的功能
ls | tr ‘a-z‘ ‘A-Z‘
? 防火墙
centos 6.x的是iptables
centos7 是firewalld
? 屏幕和文件都需要结果
○ who | tee -a who.out
○ 屏幕上有输出的好处:有标准输出,可以继续管道
○ who | tee -a who.out | grep root
? 重定向:
> >> file 重定向输出
2> 2>>file 重定向错误
< file 输入重定向
<<keyword 多行重定向
&> file 输出和错误全重定向
cmd1 | tee file
? 判断用户:看用户UID
○ 方法:id -u root
○ root:0
○ 普通用户:
§ cent6:500开始,1-499系统用户(服务、进运行时使用)
§ cent7:1000开始,1-999系统用户
○ 系统用户:
§ shell类型:/sbin/nologin (不需要登录的shell)
? 组:用户账号的集合
○ 好处:统一权限管理
○ 管理员组:root 0
○ 组的id同用户id相同,新建用户就会有相同的组
? 组分类:
○ 主要组:必须有。新建账号是就已经建立。
○ 附加组:不必须。
○ id root
? 用户和组的配置文件:
○ 用户及其属性信息:/etc/passwd
○ 用户密码及其相关属性:/etc/shadow
○ 组及其属性信息:/etc/group
○ 组密码及其相关属性:/etc/gshadow
? 上传下载
○ rz:上传到Linux
○ sz:从Linux下载
? 用户管理命令:
○ Useradd:
§ useradd username 没有密码,不能登录,/etc/pwd下为!
§ Useradd -u 1234 username -r 创建系统用户,指定id。系统账号没有家目录
§ useradd -u 666 mysql -g mysql mysql -r -s /sbin/nologin 创建用户,且指定主 id shell类型
§ useradd -G mongdb,root 指定两个辅助组
§ useradd -M test 不创建家目录
○ Usermod:
§ 锁定账号:usermod -L username
§ 解锁账号:usermod -U username
○ Userdel:
○ /ect/default/useradd 用户创建默认规则
○ 用户邮箱:/var/spool/mail
○ 口令策略:/etc/login.cnf
○ 添加辅助组:usermod -aG wang mage
○ 删除辅助组:usermod -G "" wang 主组不能清除
○ 删除用户:userdel test 不会删除组
○ 删除用户:userdel -r test 删除用户、组、邮箱
? 组管理命令:
○ Groupadd -g 666 mysql 创建组,并指定id。先建立组
○ 新建文件,文件所有者是主组
○ gpasswd groupname 修改组口令
?
? 切换用户:
○ su test:不完整切换,不切换目录
○ su - test:相当于重新切换(身份和环境均切换),切换到家目录
○ 切换账号:用完就exit退回
○ 仅切换一次:su - root -c "cat /etc/shadow"
? 口令:
○ passwd -d wang 删除
○ passwd wang 添加口令
○ echo centos | passwd --stdin wang 避免确认口令,修改多个人的口令
○ passwd -e wang 账号设置过期
? 文件权限:
○ r 读
○ w 写
○ x 执行:脚本和二进制文件可以执行
○ 所有者、所属组、other:需要配置权限
? 目录
○ r 可以查看目录下的文件 ls
○ x 可以cd
○ w 新建、删除文件
? CentOS7设置ip地址:
○ 位置:cd /etc/sysconfig/network-scripts
○ 修改网卡文件名
mv ifcfg-ens33 ifcfg-eth0
○ 修改ip文件
vim ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static 静态ip
IPADDR=192.168.10.7
NETMASK=255.255.255.255
ONBOOT=yes
○ 重启服务
systemctl restart network
○ 查看网卡对应连接
○ nmcli connection reload
nmcli connection show
? chown test file1 改所有者
? chgrp test group1 改所属组
? chown test:group1 file1 改所有者和所属组
? chown -R test:group1 递归修改
? chmod 修改权限
○ 权限:u-user;g-group;o-other;a-all
○ 权限:+ 增加权限;- 删除权限;= 赋予权限
○ 权限:r-read;w-write;x-execute;X-给文件夹加执行权限
○ 权限:r-4;w-2;x-1
○ chmod g-r file1 删除所属组的读权限
○ chmod u=rwx,g=rw,o= file1 修改所有权限
○ chmod 640 file1 数字法修改权限
○ 删除目录是目录权限决定的,不是目录里面的文件决定的**
? umask(掩码)影响文件和文件夹默认权限:
○ 文件默认权限 = 666-umask
○ 文件夹默认权限=777-umask
○ 例外情况:对文件。如果666-umask结果有奇数就+1
○ umask
○ umask -S
○ umask文件(用户家目录):vim .bashrc
? /usr/bin/passwd 文件有特殊属性:
○ s-suid 当其他用户运行passwd文件时,临时切换成passwd所有者的权限
○ s-权限只适合可执行的二进制的文件
○ sgid-适合组内人员进行权限限制,chmod g+s DIR在父文件夹授权,子文件均属于一个组
○ t-加上后不能删除别人的文件(主要作用在文件夹上,避免文件被别人删除)
? 自定义账号权限:(除user、group、other外的权限)
○ setfacl -m u:wang:000 dir:set file acl权限
○ getfacl dir:查看file acl权限
○ setfcal -x u:wang dir:删除acl权限
○ setfacl -b dir:清空acl权限
○ setgacl -m g:g2:rw dir
○ getgacl dir
○ 是否有acl功能:tune2fs -l /dev/sda2 查看分区acl
以上是关于linux基础的主要内容,如果未能解决你的问题,请参考以下文章