程序员必知必会的 Linux系列 —— 基础篇

1. Linux

  • Linux是一套无偿使用和自由传播的类Unix操做系统
  • 在服务器端领域和嵌入式领域有很是普遍的应用

2.版本

分为内核版本和发型版本php

  • kernel
  • 各个厂商会制做本身的发行版本
    • redhat
    • CentOS
    • ubuntu
    • fedora

3. Linux与Windows的不一样

  • Linux严格区分大小写
  • Linux中全部的内容以文件形式保存,包括硬件、用户和文件。
  • Linux不靠扩展名区分文件类型,是靠权限来区分,可是有一些约定的扩展名,是给管理员看的
    • 压缩包 .gz .bz2 .tar.bz2 .tgz
    • 二进制文件 .rpm
    • 网页文件 .html .php
    • 脚本文件 .sh
    • 配置文件 .conf
  • Windows下的程序不能直接在Linux中安装和运行
  • Linux更多使用字符界面
    • 占用的系统资源更少
    • 减小了出错和被攻击的可能性,会让系统更稳定

3. 购买服务器

4. 链接服务器

5.linux经常使用命令

5.1 常见目录

目录 用途
/ 根目录
/boot 启动目录,启动相关文件
/dev 设备文件
/etc 配置文件
/home 普通用户的家目录,能够操做
/lib 系统库保存目录
/mnt 移动设备挂载目录
/media 光盘挂载目录
/misc 磁带机挂载目录
/root 超级用户的家目录,能够操做
/tmp 临时目录,能够操做
/proc 正在运行的内核信息映射, 主要输出进程信息、内存资源信息和磁盘分区信息等等
/sys 硬件设备的驱动程序信息
/var 变量
/bin 普通的基本命令,如ls,chmod等,通常的用户也均可以使用
/sbin 基本的系统命令,如shutdown,reboot,用于启动系统,修复系统,只有管理员才能够运行
/usr/bin 是你在后期安装的一些软件的运行脚本
/usr/sbin 放置一些用户安装的系统管理的必备程序

5.2 命令基本格式

5.2.1 命令提示符

[root@james ~]#
复制代码
  • root 当前登陆用户
  • localhost 主机名
  • ~ 当前工做目录,默认是当前用户的家目录,root就是/root,普通用户是 /home/用户名
  • 提示符 超级用户是 #,普通用户是$

5.2.2 命令格式

  • 命令 [选项] [参数]
  • 当有多个选项时,能够写在一块儿
  • 通常参数有简化和完整写法两种 -a--all等效

5.2.3 ls

  • 查询目录中的内容
  • ls [选项] [文件或者目录]
  • 选项
    • -a 显示全部文件,包括隐藏文件
    • -l 显示详细信息
    • -d 查看目录自己的属性而非子文件 ls /etc/
    • -h 人性化的方式显示文件大小
  • 默认当前目录下的文件列表
ls -l
复制代码
5.2.3.1 -l

显示详细信息html

drwxr-xr-x  root  root   800 Sep 16 00:19 logs
复制代码
drwxr-xr-x root root 800 Sep 16 00:19 logs
文件类型和权限 全部者 所属组 文件大小 最后修改时间 文件名

5.3 文件处理命令

5.3.1 mkdir

  • 创建目录 make directory
  • mkdir -p [目录名]
    • -p 递归建立
mkdir -p hello
复制代码

5.3.2 cd

  • 切换所在目录 change directory
  • cd [目录]
    • ~ 家目录
    • . 当前目录
    • .. 上级目录
  • 相对路径是参照当前所在目录
  • 绝对路径是从根目录开始
  • 按TAB键能够补全命令和目录
cd hello
复制代码

5.3.3 pwd

  • 显示当前目录 pwd
pwd
复制代码

5.3.4 rmdir

  • 删除目录 remove empty directory
  • rmdir [目录名]
rmdir hello
复制代码

5.3.5 rm

  • 删除文件或者目录 remove
  • rm [文件或者目录]
    • -r 删除目录
    • -f 强制删除
  • rm -rf 文件或者目录] 递归强制删除全部目录
rm -rf hello
复制代码

5.3.6 cp

  • copy 复制命令
  • copy [源文件或者目录] [目标文件]
    • -r 复制目录,默认是复制文件
    • -i 会在复制文件的时候给提示,若是复制的目标文件存在,会给你提示是否要覆盖
mkdir afolder
mkdir bfolder
cd afolder/
touch 1.txt
cp 1.txt ~/bfolder/
复制代码

5.3.7 mv

  • 移动文件或者更名 move
  • mv [源文件或者目录] [目标文件]
mv 1.txt 11.txt
复制代码

5.3.8 ln

  • 连接命令,生成连接文件 link
  • ln -s [源文件] [目标文件]
    • -s 建立软连接
  • 相似Windows快捷方式
  • 修改任意一个文件,另外一个都会改变
  • 删除源文件,软连接不能使用
  • 软连接源文件必须写绝对路径
# ln -s /root/bfolder/11.txt 22.txt
复制代码

5.4 文件搜索命令

5.4.1 locate

  • 在后台数据库中按文件名搜索,速度比较快
  • 数据保存在/var/lib/mlocate/mlocate.db后台数据库,天天更新一次
  • 能够updatedb命令马上更新数据库
  • 只能搜索文件名
yum  -y install mlocate
复制代码

5.4.2 whereis

  • 搜索命令所在路径以及帮助文档所在位置linux

  • whereis 命令名git

    whereis ls
    复制代码
    • -b 只查找可执行文件
    • -m 只查找帮助文件
  • 能够查看Shell自带的命令,如 whereis cd正则表达式

5.4.3 which

  • 能够看到别名 which ls
  • 能看到的都是外部安装的命令
  • 没法查看Shell自带的命令,如 which cd

5.4.4 环境变量

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
复制代码
  • 定义的是系统搜索命令的路径
  • echo $PATH

5.4.5 find

  • 文件搜索命令
  • find [搜索范围] [搜索条件]
5.4.5.1 按名称搜索
  • 避免大范围的搜索,会很是消耗系统资源shell

    find / -name 11.txt
    复制代码
5.4.5.2 通配符
  • find是在系统当中搜索符合条件的文件名,若是须要匹配,使用通配符匹配,通配符是彻底匹配
  • 通配符
    • * 匹配任意内容
    • ? 匹配任意一个字符
    • [] 匹配任意一个中括号内的字符
# touch abc.txt
# find . -name "ab[cdef].txt"
复制代码
5.4.5.3 -i
  • 不区分大小写
find . -iname "Ab[cdef].txt"
复制代码
5.4.5.4 -user
  • 按全部者进行搜索
find /root -user root
find /root -nouser
复制代码
5.4.5.5 按时间搜索
find . -mtime +5
复制代码
参数 含义
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
参数 含义
-5 5天内修改的文件
5 5天前当前修改的文件
+5 5天前修改的文件
5.4.5.6 按大小搜索
  • k小写,M大写
find . -size +0k
复制代码
参数 含义
-8k 小于8K
8k 等于8K
+8k 大于8K
+8M 小于8M
5.4.5.7 综合应用
find /tmp -size +10k -a -size -20k
复制代码
  • 查找/etc目录下,大于10KB而且小于20KB的文件
  • -a and 逻辑与,两个条件都知足
  • -o or 逻辑或,两个条件知足一个就能够
find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
复制代码
  • exec 对上个命令的结果进行操做
5.4.5.9 grep
  • 在文件当中匹配符合条件的字符串
    • -i 忽略大小写
    • -v 排除指定字符串
  • find命令,在系统当中搜索符合条件的文件名,若是须要匹配,使用通配符匹配,通配符是彻底匹配
  • grep命令 在文件当中搜索符合条件的字符串,若是须要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
vi a.txt
grep b a.txt
grep -v b a.txt
grep -i f a.txt
复制代码

5.5 压缩与解压缩命令

5.5.1 zip格式

  • 压缩文件或目录,是一种压缩格式
功能 命令
压缩文件 zip 压缩文件名.zip 源文件
压缩目录 zip -r 压缩目录名.zip 源目录
解压 unzip 压缩目录名.zip
yum install -y unzip zip

mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book
rm -rf book/ rmdir book
unzip book.zip
复制代码

5.5.2 gzip

  • gzip为高压,能够把文件压缩得更小
  • gzip命令不支持目录
命令 示例 含义
gzip 源文件 gzip book.txt 压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 gzip -c book.txt > book.txt.gz 压缩为.gz格式的压缩文件,源文件不会消失
gzip -r 目录 gzip -r book 把目录下的每一个子文件都变成压缩包,并删除原文件,当前目录无变化
gzip -d 压缩文件名 gzip -d 1.txt.gz 解压缩文件,不保留压缩包
gunzip 压缩文件 gunzip 2.txt.gz 解压缩文件,也不保留压缩包
  • 压缩是压缩目录下的文件
touch book.txt
mkdir book
touch book/1.txt
touch book/2.txt
gzip book.txt //源文件会消失
gzip -c 1.txt > 1.txt.gz //源文件不消失
gzip book.txt  //压缩为.gz格式文件,源文件会消失
gzip -r book //把目录下的每一个子文件都变成压缩包
cd book
gzip -d 1.txt.gz  //解压缩文件,不保留压缩包
gunzip 2.txt.gz 
复制代码

5.5.3 tar

  • 打包命令,只打包并不压缩数据库

  • tar -cvf
    复制代码

    打包文件名 源文件ubuntu

    • -c 打包
    • -v 显示过程
    • -f 指定打包后的文件名
tar -cvf book.tar book    //会打包出一个book.tar文件
复制代码
  • x 解开包bash

    tar -xvf book.tar 
    复制代码

5.5.4 tar.gz压缩格式

  • zip能够压缩目录但压缩效率不高,gzip压缩效率高但不支持目录
  • 能够先打包为.tar格式,再压缩为.gz格式 -c 压缩为.tar.gz格式 -x 解压缩.tar.gz格式
命令 示例 含义
tar -zcvf 压缩包名 .tar.gz源文件 tar -zcvf book.tar.gz book 能够先打包为.tar格式,再压缩为.gz格式
tar -zxvf 压缩包名.tar.gz tar -zxvf book.tar.gz 解压tar.gz压缩包
tar -zcvf book.tar.gz book
tar -zxvf book.tar.gz
复制代码

5.6 关机和重启命令

5.6.1 shutdown

  • shutdown 关机命令
    • -c 取消前一个关机命令
    • -h 关机
    • -r 重启
shutdown -r 06:00
shutdown -c
复制代码

5.6.2 init

关机服务器

init 0
复制代码

重启

init 6
复制代码

5.6.3 logout

退出登陆

logout
复制代码

5.7 查看登陆用户信息

5.7.1 w

查看登陆用户信息

  • USER 登陆的用户名
  • TTY 登陆的终端 tty1 本地终端 pts/0远程终端
  • FROM 登陆的IP
  • LOGIN 登陆时间
  • IDLE 用户闲置时间
  • JCPU 该终端全部进程占用的时间
  • PCPU 当前进程所占用的时间
  • WHAT 正在执行的命令

5.7.2 who

  • 查看登陆用户信息
    • USER 登陆的用户名
    • TTY 登陆的终端 tty1 本地终端 pts/0远程终端
    • LOGIN 登陆时间(登陆的IP)

5.7.3 last

  • 查看当前登陆和过去登陆的用户信息

  • 默认读取

    /var/log/wtmp
    复制代码

    文件

    • 用户名
    • 登陆终端
    • 登陆IP
    • 登陆时间
    • 退出时间(在线时间)

5.7.4 lastlog

  • 查看全部用户的最后一次登陆时间
    • 用户名
    • 登陆终端
    • 登陆IP
    • 最后一次登陆时间

5.8 文件查看命令

5.8.1 cat

  • cat 命令用于链接文件并打印到标准输出设备上。

  • cat [-AbeEnstTuv] [--help] [--version] fileName

  • 参数

    • -n 或 --number:由 1 开始对全部输出的行数编号。

      cat -n textfile1
      复制代码

5.8.2 more

  • Linux more 命令相似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,并且还有搜寻字串的功能(与 vi 类似),使用中的说明文件,请按 h 。
  • more fileName
more  testfile
复制代码

5.8.3 head

  • 用来显示开头某个数量的文字区块
head -5 readme.txt
复制代码

5.8.4 tail

  • tail命令可用于查看文件的内容

  • 有一个经常使用的参数 -f 经常使用于查阅正在改变的日志文件。

  • tail [参数] [文件]

  • 参数

    • -f 循环读取

    • -n<行数> 显示文件的尾部 n 行内容

      tail -5 mail.txt
      tail -f access.log
      复制代码

5.8.5 第二页

 head -10 file | tail -5
复制代码

6. 硬件设备文件名

  • 只要插入硬盘,Linux会自动检测和分配名称
  • 一个硬盘能够分红多个分区,每一个分区都会有一个系统分配的名称
  • 第一块SCSI硬盘名称叫sda,它的第一个分区叫sda1
  • 第一块虚拟化环境的磁盘是vda,它的第一个分区叫vda1
  • df(disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用状况统计
df -h
复制代码
硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
virtio磁盘 /dev/vd[a-p]

6.1 IDE硬盘接口

idedisk

6.2 SCSI硬盘接口

SCSIdisk

6.3 SATA硬盘接口

satadisk

7. 分区

diskformat2

  • 磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
  • 磁盘一旦划分红多个分区,不一样类的目录与文件能够存储进不一样的分区内

8. 挂载点

  • 为了让Linux系统中能够访问这些分区,须要把这些分区挂载到对应的目录上
  • 在Linux中是把目录称为挂载点
  • 把目录和分区连接在一块儿的过程成为挂载
  • /为根目录,必须挂载到一个分区上,默认全部子目录都会写入这个分区
  • 同一级目录下面的全部子目录能够有本身的独立存储空间
  • 必须有的分区
    • / 根分区
    • swap分区(交换分区,虚拟内存,通常为内存的2倍,不要超过2G)
  • 推荐分区
    • /boot (启动分区,200M) 单独分区,避免分区写满形成系统没法启动

9.1 挂载示例

  • /dev/sd2挂载到了 /目录上,也就是说向/目录下在写文件就是往/dev/sd2分区里写文件
  • /dev/sd1挂载到了 /boot目录上,也就是说向/boot目录下在写文件就是往/dev/sd1分区里写文件
  • /dev/sd3挂载到了 //home目录上,也就是说向//home目录下在写文件就是往/dev/sd3分区里写文件

mount

相关文章
相关标签/搜索