教程来自慕课网@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存储当前系统中所有用户组信息
Group x 123 abc,def,xyz
组名称 组密码占位符 组编号 组中用户名列表
  • 超级用户的组号是0,1-499是系统预留组号,一般预留给系统服务或者软件的,用户手动创建的用户组从500开始
  • 组密码占位符都是x
  • /etc/gshadow存储当前系统中用户组的密码信息
Group *   abc,def,xyz
组名称 组密码 组管理者 组中用户名列表
  • 组密码为空或者*或者!可认为密码为空
  • 组管理者空表示该组每个用户都是组管理者
  • /etc/passwd存储当前系统中所有用户的信息
user x 123 456 xxxxxx /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:查看系统中所有的网络连接

Linux养成笔记的更多相关文章

  1. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  2. 跟着鸟哥学Linux系列笔记0-如何解决问题

    跟着鸟哥学Linux系列笔记0-扫盲之概念 在发生问题怎么处理: 1.  在自己的主机.网络数据库上查询How-To或FAQ -Linux 自身的文件数据: /usr/share/doc -CLDP中 ...

  3. 20155303狄惟佳预备作业三Linux学习笔记

    20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...

  4. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  5. Linux内核笔记--内存管理之用户态进程内存分配

    内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你 ...

  6. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

  7. Linux学习笔记(一)2015.4.13

    研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...

  8. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  9. 跟着鸟哥学Linux系列笔记2-第10章VIM学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 常用的文本编辑器:Emacs, pico, nano, joe, vim VI ...

随机推荐

  1. UVa 11846 - Finding Seats Again

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. (1) 天猫精灵接入Home Assistant- 网站论坛

    https://bbs.hassbian.com/forum-38-1.html 1051196347 123456 https://bbs.hassbian.com/thread-4054-1-1. ...

  3. JS进阶之---作用域,作用域链,闭包

    一.作用域: 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找.这里的标识符,指的是变量名或者函数名. Ja ...

  4. Click to add to Favorites Troubleshooting: High Version Count Issues (Doc ID 296377.1)

    Copyright (c) 2018, Oracle. All rights reserved. Oracle Confidential. Click to add to Favorites Trou ...

  5. <<Linux kernel development>> Process Management

    The Process On modern operating systems,processes provide two virtualizations:a virtualized processo ...

  6. PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化

    After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...

  7. TLAB

    TLAB的全称是Thread Local Allocation Buffer,即线程本地分配缓存区,这是一个线程专用的内存分配区域. 由于对象一般会分配在堆上,而堆是全局共享的.因此在同一时间,可能会 ...

  8. UI自动化测试模型

    所谓的自动化测试模型,可以理解为自动化测试框架+工具设计的一种思想产物. 先说说库.框架.工具之间的区别: 库:英文名Library,由代码集成的一个产品,供用户调用.面向对象的库叫做类库,面向过程的 ...

  9. MySQL(十)操纵表及全文本搜索

    一.创建表 MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 创建表一般有如下两种方式: ①使用具有交互式创建和管理表的工具: ②直接使用MySQL语句操纵表 ...

  10. JAVA中map的分类和各自的特性

    java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMap Map不允许键重复,但允许值重 ...