Linux养成笔记

教程来自慕课网@Tony老师的课程


Linux简介


Linux发展史

Andrew S. Tanenbaum为了给学生讲课,买了一个Unix操作系统,参考他开发了Minix,并开放代码作为大学研究,2000正式开源,Linus Torvalds(大三大学生!),以Minix为模板,自己开发部分软件和功能,结合网上补丁,写了一个操作系统,对,Linux(1991年?怎么和上边的2000年有冲突?)。
服务器领域超过80%
内核版本和发行版本,内核官网:www.kernel.org


开源软件简介

开源:开放源代码
开源可以收费,如果用开源软件开发,可以拿去卖钱,但是应该把软件开源。(有点冲突吧?)


Linux应用领域

  1. 基于Linux的企业
    www.netcraft.com:查看统计数据
  2. 嵌入式应用
    安卓手机下载ssh软件,可以连接
    (苹果手机系统底层是Unix)

Linux和Windows不同

  • Linux严格区分大小写
  • Linux中所有内容以文件形式保存,包括硬件(一切内容皆文件,用户也是文件)
  • Linux不靠扩展名区分文件类型(靠权限区分)

安装CentOS


分区概念(针对MBR)

有一个比喻,硬盘是柜子,分区是不同的柜门。

  • 主分区最多只能4个
  • 扩展分区最多只能1个,主分区加扩展分区最多只能4个,扩展分区不能写入数据,只能包含逻辑分区
  • 格式化,把分区分块,4kb一个,建立分区链表,格式化为了写入文件系统
  • 分区号,1-4只能给主分区使用,逻辑分区从5开始,就算你只有2个主分区也从5开始

分区设备文件名

  • /dev/hda1 :IDE硬盘接口
  • /dev/sda1 :SCSI硬盘接口、SATA硬盘接口

挂载

Linux不叫盘符,称挂载点

  • 必须分区:/ 根分区,swap 交换分区(理解为虚拟内存),内存2倍(如果内存不超过4G)或者和内存一样大(内存大于4G)。(实验环境下不超过2GB就够了)
  • 推荐分区:/boot 启动分区,200MB
  • 其他目录也可以单独占用一个分区
  • 目录和分区关联起来叫做挂载

安装

  • 1.进入BIOS设置光盘启动,装完以后要改回来。(虚拟机会自动识别是否有系统,没有则从光盘启动,故虚拟机可省略此步(亲测此条存在疑义,需设置BIOS,vm10))

    “Install or upgrade an existing system”:安装或升级现有系统
    “Install system with basic video driver”:安装过程采用基本的显卡驱动
    “Rescue installed system”:进入系统修复模式
    “Boot form local driver”:退出安装从硬盘启动
    “Memory test”:存储介质检测

  • 2.选择语言和地区

  • 3.分区:自定义布局,创建boot、home、swap、”/“分区

  • 4.选择Basic Server(基本服务器安装包)


安装日志

  • /root/install.log :存储了安装在系统中的软件包和及其版本信息
  • /root/install.log.syslog :存储了安装过程中留下的事件记录
  • /root/anaconda-ks.cfg :以Kickstart配置文件的格式记录安装过程中配置的选项信息(重要的安装模板文件,可实现网络批量安装)

网络配置

  1. setup ->network ->eth0 ->ip(如果真实电脑为192.168.1.9,虚拟机中可设置192.168.1.100) ->子网掩码255.255.255.0 ->默认网关和真实电脑的一致(192.168.1.1) ->ONBOOT打*(这一步确定) ->dns和默认电脑的一致(192.168.1.1) ->保存退出
  2. service network restart :重启网络服务
  3. ping www.baidu.com -c 4 :ping一下百度或者什么网站(如果没有网络就ping自己得真实机)的试试看,ifconfig 可查看设置

以为上实验得出的结果,还不太懂得变通。


Linux常用命令


命令基本格式

  • [root@localhost ~]#
    • root:当前登录用户
    • localhost:主机名
    • ~:当前所在目录(家目录,管理员为/root,普通用户为/home/user1)
    • #:超级用户的提示符(普通用户的提示符$)
  • 命令 [选项] [参数]:个别命令不遵守,多个选项可以卸载一起,有的选项可以使用简写

目录处理

  • ls [选项] [文件或目录] :查询目录中内容,

    • -a 显示所有文件,包括隐藏文件(”.”开头的文件)
    • -l 显示详细信息,数字1代表引用次数 ll=ls -l
    • -d 查看目录属性
    • -h 人性化显示文件大小,所有统计大小命令支持该选项
    • -i 显示inode
  • mkdir -p [目录名]:递归建立目录

    • -p 递归创建
  • cd [目录]:切换所在目录

    • ~ 当前用户的家目录
    • - 上一次目录
    • .. 上一级目录
    • . 当前目录
  • pwd:显示当前目录(print working directory)

  • rmdir [目录名]:删除空目录

  • rm -rf [文件或目录]:删除文件或目录,没有回收站,删了就没了

    • -r 删除目录
    • -f 强制,不指定会询问
  • cp [选项] [源文件或目录] [目标目录]:复制
    • -r 复制目录
    • -p 连带文件属性复制
    • -d 若源文件是链接文件,则复制链接属性
    • -a 相当于 -pdr
  • mv [原文件或目录] [目标目录]:剪切或改名(操作目录是不需要-r)

  • ln -s [源文件] [目标文件]:生成链接文件

    • -s 创建软链接

     

    硬链接:拥有相同的i节点和存储block块,可以看作是同一个文件,可通过i节点识别,不能跨分区,不能针对目录使用。(想象教室两个门,两个门都是进入这个教室)
    软链接:类似Windows快捷方式,拥有自己的I节点和block块,但是数据块只保存原文件的文件名和i节点号,没有实际的文件数据,软链接文件权限都为lrwxrwxrwx,修改任意文件另一个都改变,删除原文件,软链接不能使用,软链接的数据块内容保存的是原文件的i节点信息

    例子:a,ah,as,删除a,ah可以使用,as不能使用

    要创建软链接,要么在同一个目录下操作,要么写明源文件的绝对路径,因为是在目标文件目录下找同名的


常见目录作用

  • / 根目录
  • /bin 命令保存目录(普通用户就可以读取的命令)
  • /boot 启动目录,启动相关文件
  • /dev 设备文件保存目录
  • /etc 配置文件保存目录
  • /home 普通用户的家目录
  • /lib 系统库保存目录
  • /mnt 系统挂载目录
  • /media 挂载目录
  • /root 超级用户的家目录
  • /tmp 临时目录
  • /sbin 命令保存目录(超级用户才能使用的目录)
  • /proc 直接写入内存的,不能直接操作
  • /sys 不能直接操作
  • /var 系统相关文档内容
  • /usr 系统软件资源目录
    • /usr/bin 系统命令(普通用户)
    • /usr/sbin 系统命令(超级用户)

Linux是一个严谨的系统,不应该随意保存文件


搜索命令

  • locate 文件名:在后台数据库中按文件名搜索,搜索速度更快

    • /var/lib/mlocate:locate命令所搜索的后台数据库
    • updatedb:更新数据库
    • 例子:locate locate
    • 缺点:只可以按照文件名搜索
    • 注意:/etc/updatedb.conf 文件中PRUNE_BIND_MOUNTS = "yes" 开启搜索限制,PRUNEFS = 搜索时不搜索的文件系统,PRUNENANMES = 搜索时不搜索的文件类型,PRUNEPATHS = 搜索时不搜索的路径,这里面有包含/tmp文件夹,也就是搜索会忽略这个文件夹。
  • whereis 命令名:搜索命令所在路径及帮助文档所在位置(针对外来命令)

    • -b 只查找可执行文件
    • -m 只查找帮助文件
  • which 文件名:搜索命令所在路径及别名

  • find [搜索范围] [搜索条件]:搜索文件

    • 例子:find / -name install.log,应避免大范围搜索,会非常耗系统资源,可使用通配符,是完全匹配,find / -name "install.log*"
    • 通配符:* 匹配任意内容,? 匹配任意一个字符,[] 匹配中括号内的任意一个字符
    • -i 不区分大小写
    • -user 按照所有者查询
    • -nouser 查找没有所有者的文件,可能是垃圾文件。内核产生的文件也可能没有所有者,也有可能是外来文件。
    • find /var/log/ -mtime +10:查找10天前修改的文件
      • -10 10天内
      • 10 10天当天
      • atime 文件访问时间
      • ctime 改变文件属性
      • mtime 改变文件内容
    • find . -size 25k:查找当前目录(”.”)下文件大小是25kb的文件(默认单位是硬盘的扇区(固定是512字节?未考证))
      • -25k 小于25kb的文件(小写的k,大写的M)
      • 25k 等于25kb的文件
      • +25k 大于25kb的文件
    • find . -inum 262422:查找i节点是262422的文件
    • find /etc -size +20k -a -size -50k:查找/etc目录下,大于20kb并且小于50kb的文件
      • -a and 逻辑与,两个条件都满足
      • -o or 逻辑或,两个条件满足一个
    • find /etc -size +20k -a -size -50k -exec ls -lh {} \;:查找/etc目录下,大于20kb并且小于50kb的文件,并显示详细信息
      • -exec/-ok 命令 {} \; 搜索结果执行操作
  • grep [选项] 字符串 文件名:在文件当中匹配符合条件的字符串
    • -i 忽略大小写
    • -v 排除指定字符串
    • 正则表达式包含匹配

帮助命令

Linux中认为男人是无所不能的,所有用“man”作为帮助命令。

  • man 命令:获取指定命令的帮助
    • man ls:查看ls命令帮助,/-d 查找-d关键字,n 下一个匹配项,N 上一个匹配项
  • man的级别
    • 1:查看命令的帮助
    • 2:查看可被内核调用的函数的帮助
    • 3:查看函数和函数库的帮助
    • 4:查看特殊文件的帮助(主要是/dev目录下的文件)
    • 5:查看配置文件的帮助
    • 6:查看游戏的帮助
    • 7:查看其他杂项的帮助
    • 8:查看系统管理员可用命令的帮助
    • 9:查看和内核相关文件的帮助(有的没有这个级别)
  • man -f 命令:查看命令拥有哪些级别的帮助,相当于whatis 命令
    • man 5 passwd:查看passwd命令级别5的帮助(ps:有一个文件/etc/passwd)
    • man 4 null:Linux黑洞,在/dev/null,还有一个/dev/zero
    • man 8 ifconfig:发现ifconfig只能root使用
  • man -k 命令:查看和命令相关的所有帮助,相当于apropos 命令
    • apropos passwd:不一定是命令,所有包含passwd关键字的命令相关的帮助
  • 命令 --help:获取命令选项的帮助
  • help shell内部命令:shell内部命令帮助
    • whereis cd:确定是否是shell内部命令
    • help cd:获取内部命令帮助
  • info 命令:详细命令帮助
    • 回车 进入子帮助页面(带有*标记)
    • u 进入上层页面
    • n 进入下一个帮助小节
    • p 进入上一个帮助小节
    • q 退出

压缩命令

  • zip 压缩文件名 源文件:和Windows中的zip一样
    • -r 压缩目录
  • unzip 压缩文件:解压缩.zip文件
  • gzip 源文件:.gz格式压缩,源文件消失
  • gzip 源文件 > 压缩文件:保留源文件
  • gzip -r 目录:压缩目录下所有的 子文件,不能压缩目录
  • gzip -d 压缩文件:解压缩文件
  • gunzip 压缩文件:解压缩文件
    • -r 解压缩目录下的文件
  • bzip2 源文件:压缩为.bz2,不保留源文件,不能压缩目录
    • -k 保留源文件
  • bzip2 -d 压缩文件:解压缩
  • bunzip2 压缩文件:解压缩
    • -k 保留源文件
  • tar -cvf 打包文件名 源文件:打包
    • -c 打包
    • -v 显示过程
    • -f 指定打包后的文件名
  • tar -xvf 打包文件名:解打包
    • -x 解打包
  • tar -zcvf 压缩包名.tar.gz 源文件:打包为.tar.gz
    • -z 压缩为.tar.gz格式
  • tar -zxvf 压缩包名.tar.gz:解压缩
  • tar -jcvf 压缩包名.tar.bz2 源文件:打包为.tar.bz2
    • -z 压缩为.tar.bz2格式
  • tar -jxvf 压缩包名.tar.bz2:解压缩
  • tar -jxvf 压缩包名.tar.bz2 -C 目录:指定解压缩位置
  • tar -zcvf /tmp/test.tar.gz abc abd:把多个文件打包一起并压缩
  • tar -ztvf test.tar.gz:查看压缩包里的内容

关机与重启

  • shutdown [选项] 时间
    • -c 取消前一个关机命令
    • -h 关机
    • -r 重启
  • shutdown -r 05:06:5点6分重启
    • shutdown -r 05:06 &:放入后台执行
  • halt:关机
  • poweroff:断电
  • init 0:关机
  • reboot:重启,相对比较安全
  • init 6:重启
  • logout:登出

挂载命令

  • mount:查询系统中已经挂载的设备
  • mount -a:依据配置文件/etc/fstab的内容,自动挂载
  • mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点:挂载命令
    • -t 文件系统,加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660(光盘默认文件系统)等文件系统
    • -o 特殊选项,可以指定挂载的额外选项
      • atime/noatime 访问分区文件时是否更新访问时间
      • asyns/syns 异步/同步,默认异步
      • auto/noauto 自动/手动,mount -a 命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认自动
      • defaults 定义默认值,相当于rw,dev,exec,auto,nouser,async这7个选项
      • exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec执行
      • remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
      • rw/wo 读写/只读,文件系统挂载时,是否具有读写权限,默认rw
      • suid/nosuid 是否具有SUID和SGID权限,默认具有
      • user/nouser 是否允许普通用户挂载,默认不允许,只有root可以挂载
      • usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
      • grpquota 写入代表文件系统支持组磁盘配额,默认不支持
  • mount -o remount,noexec /home:重新挂载/home,并修改特殊选项(记得改回去!)
  • 挂载光盘
    • 建立挂载点:mkdir /mnt/cdrom/
    • 挂载光盘:mount -t iso9660 /dev/sr0 /mnt/cdrom/ 或者 mount /dev/sr0 /mnt/cdrom/,cdrom是sr0的软链接,建议sr0,文件系统可省略
  • 卸载命令:umount 设备文件名或挂载点
  • 挂载U盘
    • fdisk -l:查看U盘设备文件名
    • mount -t vfat /dev/sdb1 /mnt/usb/,vfat指Windows中的fat32文件系统。注意,Linux默认是不支持NTFS文件系统的,解决方法一,重新编译内核(想多了),方法二,下载ntfs-3g,就算解决了也只读。。

用户登录查看

  • w:查看登录用户信息
    • USER 登录的用户名
    • TTY 登录的终端,tty1是指本机,pts/0是指第一个远程终端
    • FROM 从哪个IP地址登录
    • LOGIN@ 登录时间
    • IDLE 用户闲置时间
    • JCPU 指的是和该终端的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
    • PCPU 当前进程所占用的时间
    • WHAT 当前正在运行的命令
  • who:查看登录用户信息
  • last:查询当前登录和过去登录的用户信息,默认是读取/var/log/wtmp数据
  • lastlog:查看所有用户的最后一次登录时间,默认读取/var/log/lastlog内容

shell基础


shell概述

shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
shell还是一个功能非常强大的编程语言,易编写,易调试,灵活性强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令

  • echo $SHELL:输出当前使用的shell
  • /etc/shells文件查看支持的shell
  • sh:进入sh,比如单用户模式、系统的光盘修复模式用的是这个shell,占用的系统资源更少。exit退出
  • csh:进入sch
  • echo [选项] [输出内容]:-e 支持反斜杠控制的字符转换
  • echo -e "\x68\x65\x6c\x6c\x6f\n":输出hello
  • echo -e "\e[1;31m 天上掉下个林妹妹 \e[0m "
  • 创建脚本:在文件hello.sh中输入(可以使用vim编辑器),chmod 755 hello.sh 更改权限,./hello.sh 或者bash hello.sh(不需要修改权限)来执行脚本
#!/bin/bash
#这一行是注释
echo -e "\e[1;31m 天上掉下个林妹妹 \e[0m "

别名

  • alias:查看系统中所有命令的别名(临时生效,重启失效)
  • alias 别名='原命令':设定命令别名
  • alias ls='ls --color=never'
  • ~/.bashrc 要永久生效应写入环境变量配置文件,下次启动生效,要马上生效,使用source .bashrc 执行一遍文件
  • unlias 别名:删除别名

命令生效顺序

  1. 用绝对路径或相对路径执行的命令
  2. 执行别名
  3. bash的内部命令
  4. 按照$PATH环境变量定义的目录查找顺序找到的第一个命令

常用快捷键

  • ctrl + c:强制终止当前命令
  • ctrl + l:清屏,或者执行clear
  • ctrl + a:光标移动到命令行首
  • ctrl + e:光标移动到命令行尾
  • ctrl + u:从光标所在位置删除到行首
  • ctrl + z:把命令放入后台
  • ctrl + r:在历史命令中搜索

历史命令

history [选项] [历史命令保存文件]
* -c 清空历史命令
* -w 把缓存中的历史命令写入历史命令保存文件~/.bash_heistory,该文件在正确退出后写入,如果指定该选项则马上保存
* 默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改
* 上下箭头调用以前的命令
* !n:重复执行第n条命令
* !!:重复执行上一条命令
* !字串:重复执行最后一条以该串开头的命令


输出重定向

  • 标准输出重定向
    • 命令 > 文件:覆盖的方式到文件
    • 命令 >> 文件:追加
  • 标准错误输出重定向
    • 命令 2>文件:覆盖方式到文件(注意右边没有空格
    • 命令 2>>文件:追加(注意右边没有空格
  • 正确输出和错误输出
    • 命令 > 文件 2>&1:覆盖方式正确和错误输出保存到同一个文件
    • 命令 >> 文件 2>&1:追加方式
    • 命令 &>文件:覆盖方式正确和错误输出保存到同一个文件(注意右侧没有空格)
    • 命令 &>>文件:追加方式(注意右侧没有空格)
    • 命令>>文件1 2>>文件2:正确的追加到文件1,错误追加到文件2
  • ls &>/dev/null:把输出结果丢到垃圾桶

输入重定向

  • wc [选项] [文件名]
    • -c 统计字节数
    • -w 统计单词数
    • -l 统计行数
  • wc回车,可以随便输入,ctrl + d 结束输入可看到统计结果
  • 命令 < 文件:把文件作为命令的输入
    • wc < test.log:统计test.log字符
  • 命令 << 标识符 ... 标识符:把标识符之间的内容作为命令的输入,如下将统计ddy之间的内容
wc << ddy
abc
adkl
adksljf akldfja
ddy

管道符

  • 多命令执行顺序
多命令执行符格式作用
; 命令1 ; 命令2 多个命令顺序执行,命令之间没有任何逻辑关系
&& 命令1 && 命令2 逻辑与。当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行
|| 命令1 || 命令2 逻辑或。当命令1执行不正确,命令2才会执行;当命令1正确执行,则命令2不会执行
  • ls && echo yes || echo no:正确执行打印yes,错误no,可以用来让程序通过输出为yes或no来判断命令是否正确执行
  • 管道符:命令1 | 命令2,命令1的正确输出作为命令2的操作对象,1报错2不会执行
  • ll /etc | more:分屏查看/etc目录下文件的详细信息
  • netstat -an | grep -i established:网络状态查询结果中寻找包含established的行,显示连接服务器的客户端
  • netstat -an | grep ESTABLISHED | wc -l:统计连接服务器的客户端数

通配符

通配符作用
? 匹配一个任意字符
* 匹配0个或任意多个字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符,例如[abc]代表一定匹配a或b或c
[-] 匹配中括号中任意一个字符,-代表一个范围,[a-z]代表匹配一个小写字母
[^] 逻辑非。表示匹配不是中括号内的一个字符,[^0-9]表示匹配一个非数字的字符

特殊符号

符号作用
单引号。在单引号中所有的特殊符号如“$”、“`”(反引号)都没有意义
“” 双引号。在双引号中特殊符号都没有特殊意义,但是“$”、“`”、“\”是例外,拥有“调用变量的值”、“引用命令”、“转义符”的特殊含义
反引号。反引号括起来的内容是系统命令,在Bash中会先执行它,和$()作用一样,不过推荐使用$(),因为反引号容易看错
$() 和反引号作用一样,用来引用系统命令
# 在shell脚本中,#开头的行代表注释
$ 用于调用变量的值,如需调用变量name的值,使用$name
\ 转义符。跟在\之后的特殊符号失去特殊含义,变为普通字符,如\”符号,而不再是变量引用
  • aa=123echo $aaecho '$aa'echo "$aa"
  • (反引号被当作特殊作用了,见下面代码)
aa=ls
echo "$aa"     //输出ls
aa=`ls`       //或者使用$(ls)
echo "$aa"   //输出ls的执行结果
echo \$bb   //输出$bb

磁盘管理


基本命令

  • df:查看磁盘分区使用状况
    • -l 仅显示本磁盘(默认)
    • -a 显示所有文件系统的磁盘使用情况,包含比如/proc/
    • -h 以1024进制计算最合适的单位显示磁盘容量
    • -H 以1000进制计算最合适的单位显示磁盘容量
    • -T 显示磁盘分区类型
    • -t 显示指定类型文件系统的磁盘分区
    • -x 不现实指定类型文件系统的磁盘分区
  • du:统计磁盘上的文件大小
    • -b 以byte为单位统计文件
    • -k 以kB为单位统计文件
    • -m 以MB为单位统计文件
    • -h 按照1024进制以最合适的单位统计文件
    • -H 按照1000进制
    • -s 指定统计目标

MBR分区

  • 主分区不超过4个
  • 单个分区不超过2TB
  • fdisk -l:显示磁盘列表
  • fdisk /dev/sdb:给sdb分区,逐步提示。

GPT分区

  • 支持128个主分区
  • 单个分区可达18EB(GB->TB->PB->EB)
  • GPT的主分区中,不适合安装x86架构的系统
  • 使用parted工具进行分区(支持MBR和GPT)
    • select device:选择磁盘
    • mklabel 分区表类型:MBR分区表msdos,GTP分区表gpt
    • print:显示详情
    • mkpart:添加分区
      • 开始位置以MB计算
      • mkpart test 2000 3000:创建从2000MB到3000MB空间大小名为test的分区(命令模式添加不能省略分区名)
    • rm 分区号:删除分区
    • unit GB:指定GB单位

分区格式化

  • mkfs:格式化工具
  • mkfs.ext3 /dev/sdb1:格式化sdb1分区为ext3
  • mkfs -t ext4 /dev/sdb2:另一种写法,功能如上
  • fdisk工具无法查看GPT分区的磁盘,应使用parted工具

为硬盘添加swap分区

  1. 建立一个普通的Linux分区
  2. 修改分区类型的16进制编码
  3. 格式化交换分区
  4. 启用交换分区

    • fdisk /dev/sdb
    • t 选择分区(可以是逻辑分区?),L 查看编码列表,82为Linux的swap分区编号
    • w:保存退出
    • mkswap /dev/sdb6:格式化swap分区(和之前的格式化不一样!
    • swapon /dev/sdb6:启用swap分区
    • free:查看swap加载状况
    • swapoff /dev/sdb6:停止swap分区

用户管理


用户和用户组

  • /etc/group存储当前系统中所有用户组信息
Groupx123abc,def,xyz
组名称 组密码占位符 组编号 组中用户名列表
  • 超级用户的组号是0,1-499是系统预留组号,一般预留给系统服务或者软件的,用户手动创建的用户组从500开始
  • 组密码占位符都是x
  • /etc/gshadow存储当前系统中用户组的密码信息
Group* abc,def,xyz
组名称 组密码 组管理者 组中用户名列表
  • 组密码为空或者*或者!可认为密码为空
  • 组管理者空表示该组每个用户都是组管理者
  • /etc/passwd存储当前系统中所有用户的信息
userx123456xxxxxx/home/user/bin/bash
用户名 密码占位符 用户编号 用户组编号 用户注释信息 用户主目录 shell类型
  • /etc/shadow存储当前系统中所有用户的密码信息
    • 用户名:密码(加密过的):::::

基本命令

  • groupadd sexy:添加sexy用户组
  • groupmod -n market sexy:修改用户组名称
  • groupmod -g 668 market:修改组编号
  • groupadd -g 888 boss:创建组编号为888组名boss的组
  • groupdel market:删除组market(应该先删除用户组中的用户,否则和用户相关的文件权限会出问题)
  • useradd -g sexy sdf:sexy组添加sdf用户
  • useradd -d /home/xxx imooc:创建用户的同时指定个人文件夹(由于没有指定用户组,会创建和用户名相同的用户组)
  • usermod -c dgdzdymx sdf:给sdf用户添加备注信息
  • usermod -l cls sdf:把sdf更名为cls
  • usermod -d /home/cls cls:修改cls个人文件夹的路径
  • usermod -g sexy imooc:把修改imooc的用户组
  • userdel jzmb:删除用户jzmb
  • userdel -r jzmb:删除用户jzmb并同时删除个人文件夹
  • touch /etc/nologin:创建nologin文件,禁止除管理员以外的其他用户登录,下一次启动文件将消失,文件内容无关紧要


  • passwd -l cls:锁定用户cls

  • passwd -u cls:解锁用户cls
  • passwd -d cls:删除cls的密码,可以无密码登录
  • 主要组和附属组
    • 用户可以同时属于多个用户组,一个主要组,多个附属组
  • gpasswd -a cls boss:为cls添加附属组boss,添加多个附属组用‘,’分隔
  • newgrp boss:切换为boss组身份,此时需要输入组密码(boss如果有的话)
  • gpasswd -d cls boss:将cls从附属组boss移除
  • useradd -g group1 -G group2,group3,... user:添加用户user,并同时指定主要组和附属组
  • gpasswd imooc:更改imooc组的组密码


  • su username:切换用户,不加用户名为切换到root用户(当然需要密码),root切换到普通用户不需要密码

  • whoami:我是谁,显示当前登录用户名
  • id imooc:显示指定用户信息,包括用户编号、用户名、主要组编号及名称、附属组列表
  • groups imooc:显示imooc用户所在的所有组
  • chfn imooc:设置用户imooc资料,依次输入用户资料
  • finger imooc:显示用户imooc详细资料

其他


硬件设备文件名

  • IDE硬盘:/dev/hd[a-d]
  • SCSI/SATE/USB硬盘:/dev/sd[a-p]
  • 光驱:/dev/cdrom/dev/hdc
  • 软驱:/dev/fd[0-1]
  • 打印机(25针):/dev/lp[0-2]
  • 打印机(USB):/dev/usb/lp[0-15]
  • 鼠标:/dev/mouse/

密码原则

  • 复杂性:
    1. 八个字符以上,包含大小写字母、数字、符号
    2. 不能是英文单词
    3. 不能是和用户相关的内容
  • 易记忆性
  • 时效性

软件包选择

  • Desktop:桌面
  • Minimal Desktop:最小化桌面
  • Minimal:最小化(实际服务器选择此包)
  • Basic Server:基本服务器(实验需要,选择此包)
  • Database Server:数据库服务器
  • Web Server:网页服务器
  • Virtual Host:虚拟主机
  • software development workstation:软件开发工作站

权限

-rw-r--r--
-:文件类型,-:文件,d:目录,l:软链接文件,还有块设备文件、字符设备文件、套接字文件和管道文件

r w -r - -r - -
u所有者 g所属组 o其他人

r读,w写,x执行
“.“代表acl权限,从centos6开始(完全不懂)


PATH环境变量

定义的是系统搜索命令的路径
* echo $PATH:显示环境变量


系统运行级别

runlevel:显示当前系统级别,N是空

  • 0 关机,如init 0
  • 1 单用户,类似安全模式
  • 2 不完全多用户,不含NFS服务
  • 3 完全多用户
  • 4 未分配
  • 5 图形界面
  • 6 重启

/etc/inittab文件可以系统默认运行级别


控制字符

  • \a 输出警报音
  • \b 退格键
  • \n 换行符
  • \r 回车键
  • \t 制表符
  • \v 垂直制表符
  • \0nnn 按照八进制ASCII表输出字符,其中0为数字零,nnn是三位八进制数
  • \xhh 按照十六进制ASCII表输出字符,其中hh是两位十六进制数

echo输出颜色

echo -e "\e[1;颜色 字符串 \e[0m "

  • 30m 黑色
  • 31m 红色
  • 32m 绿色
  • 33m 黄色
  • 34m 蓝色
  • 35m 洋红
  • 36m 青色
  • 37m 白色

标准输入输出

设备设备文件名文件描述符类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

零碎

  • VMware_Install_Clean 软件卸载VM
  • 虚拟机快照功能推荐,特别强大
  • 虚拟机克隆功能
  • "/" 表示根目录
  • ctrl + alt :鼠标退出虚拟机
  • ctrl + alt +enter :虚拟机全屏
  • 中文插件有zhcon
  • setup为RedHat系统专有得工具。
  • Tony推荐Xshell,我在此**强烈推荐**MobaXterm。
  • table键补全命令或者文件或者目录
  • echo abc >> log.txt:可以往log.txt写入abc
  • touch [文件]:新建文件
  • cat [文件]:显示文件内容
  • whoami:我是谁。。。
  • cd命令是Linux的shell内置命令,所以找不到该命令的位置。
  • date:查看系统时间
  • ctrl + c:终止退出
  • Linux中X代表图形界面
  • 脚本文件开头需要有#!/bin/bashchmod 755 hello.sh 修改执行权限,./hello.sh 执行该文件
  • \:可以断行输入命令
  • # 在Linux中表示注释,#!/bin/bash 例外
  • more:分屏显示文件内容
  • netstat -an:查看系统中所有的网络连接

 

posted @ 2017-07-13 12:41  淋某人  阅读(276)  评论(0编辑  收藏  举报