9.5 KiB
玩转Linux操作系统
操作系统发展史
Linux概述
Linux是一个通用操作系统。一个操作系统要负责任务调度、内存分配、处理外围设备I/O等操作。操作系统通常由内核和系统程序(设备驱动、底层库、shell、服务程序等)两部分组成。
Linux内核是芬兰人Linus Torvalds开发的,于1991年9月发布。而Linux操作系统作为Internet时代的产物,它是由全世界许多开发者共同合作开发的,是一个自由的操作系统(注意是自由不是免费)。
Linux系统优点
- 通用操作系统,不跟特定的硬件绑定。
- 用C语言编写,有可移植性,有内核编程接口。
- 支持多用户和多任务,支持安全的分层文件系统。
- 大量的实用程序,完善的网络功能以及强大的支持文档。
- 可靠的安全性和良好的稳定性,对开发者更友好。
基础命令
Linux系统的命令通常都是如下所示的格式:
命令名称 [命名参数] [命令对象]
-
获取登录信息 - w / who / last。
[root@izwz97tbgo9lkabnat2lo8z ~]# w 23:31:16 up 12:16, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 182.139.66.250 23:03 4.00s 0.02s 0.00s w jackfrue pts/1 182.139.66.250 23:26 3:56 0.00s 0.00s -bash [root@izwz97tbgo9lkabnat2lo8z ~]# who root pts/0 2018-04-12 23:03 (182.139.66.250) jackfrued pts/1 2018-04-12 23:26 (182.139.66.250) [root@izwz97tbgo9lkabnat2lo8z ~]# who am i root pts/0 2018-04-12 23:03 (182.139.66.250)
-
查看自己使用的Shell - ps。
Shell也被称为“壳”,它是用户与内核交流的翻译官,简单的说就是人与计算机交互的接口。目前很多Linux系统默认的Shell都是bash(Bourne Again SHell),因为它可以使用Tab键进行命令补全、可以保存历史命令、可以方便的配置环境变量以及执行批处理操作等。
[root@izwz97tbgo9lkabnat2lo8z ~]# ps PID TTY TIME CMD 3531 pts/0 00:00:00 bash 3553 pts/0 00:00:00 ps
-
查看命令的说明 - whatis。
[root@izwz97tbgo9lkabnat2lo8z ~]# whatis ps ps (1) - report a snapshot of the current processes. [root@izwz97tbgo9lkabnat2lo8z ~]# whatis python python (1) - an interpreted, interactive, object-oriented programming language
-
查看命令的位置 - which / whereis。
[root@izwz97tbgo9lkabnat2lo8z ~]# whereis ps ps: /usr/bin/ps /usr/share/man/man1/ps.1.gz [root@izwz97tbgo9lkabnat2lo8z ~]# whereis python python: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz [root@izwz97tbgo9lkabnat2lo8z ~]# which ps /usr/bin/ps [root@izwz97tbgo9lkabnat2lo8z ~]# which python /usr/bin/python
-
查看帮助文档 - man / info / apropos。
[root@izwz97tbgo9lkabnat2lo8z ~]# ps --help Usage: ps [options] Try 'ps --help <simple|list|output|threads|misc|all>' or 'ps --help <s|l|o|t|m|a>' for additional help text. For more details see ps(1). [root@izwz97tbgo9lkabnat2lo8z ~]# man ps PS(1) User Commands PS(1) NAME ps - report a snapshot of the current processes. SYNOPSIS ps [options] DESCRIPTION ... [root@izwz97tbgo9lkabnat2lo8z ~]# info ps ...
-
切换用户 - su。
[root@izwz97tbgo9lkabnat2lo8z ~]# su hellokitty [hellokitty@izwz97tbgo9lkabnat2lo8z root]$
-
以管理员身份执行命令 - sudo。
[jackfrued@izwz97tbgo9lkabnat2lo8z ~]$ ls /root ls: cannot open directory /root: Permission denied [jackfrued@izwz97tbgo9lkabnat2lo8z ~]$ sudo ls /root [sudo] password for jackfrued: calendar.py code error.txt hehe hello.c index.html myconf result.txt
说明:如果希望用户能够以管理员身份执行命令,用户必须在sudoers(/etc/sudoers)名单中。
-
登入登出相关 - logout / exit / adduser / userdel / passwd / ssh。
[root@izwz97tbgo9lkabnat2lo8z ~]# adduser jackfrued [root@izwz97tbgo9lkabnat2lo8z ~]# passwd jackfrued Changing password for user jackfrued. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@izwz97tbgo9lkabnat2lo8z ~]# ssh hellokitty@1.2.3.4 hellokitty@1.2.3.4's password: Last login: Thu Apr 12 23:05:32 2018 from 10.12.14.16 [hellokitty@izwz97tbgo9lkabnat2lo8z ~]$ logout Connection to 1.2.3.4 closed. [root@izwz97tbgo9lkabnat2lo8z ~]#
-
查看系统和主机名 - uname / hostname。
[root@izwz97tbgo9lkabnat2lo8z ~]# uname Linux [root@izwz97tbgo9lkabnat2lo8z ~]# hostname izwz97tbgo9lkabnat2lo8z [root@iZwz97tbgo9lkabnat2lo8Z ~]# cat /etc/centos-release CentOS Linux release 7.4.1708 (Core)
-
重启和关机 - reboot / init 6 / shutdown / init 0。
-
查看历史命令 - history。
实用程序
文件和文件夹操作
-
创建/删除目录 - mkdir / rmdir。
-
创建/删除文件 - touch / rm。
- touch命令用于创建空白文件或修改文件时间。在Linux系统中一个文件有三种时间:
- 更改内容的时间(mtime)
- 更改权限的时间(ctime)
- 最后访问时间(atime)
- touch命令用于创建空白文件或修改文件时间。在Linux系统中一个文件有三种时间:
-
切换和查看当前工作目录 - cd / pwd。
-
查看目录内容 - ls。
-
查看文件内容 - cat / head / tail / more / less。
-
拷贝/移动文件 - cp / mv。
-
查看文件及内容 - find / grep。
[root@izwz97tbgo9lkabnat2lo8z ~]# find -name *.html ./index.html ./code/index.html [root@izwz97tbgo9lkabnat2lo8z ~]# grep "<script>" . -R -n ./index.html:15: <script> ./code/index.html:2884: <script> ./code/foo.html:2:<!--STATUS OK--><html> <head><meta ...
-
符号链接 - ln。
-
压缩和归档 - gzip / gunzip / xz / tar。
-
其他工具 - sort / uniq / diff / file / wc。
管道和重定向
- 管道的使用 - |。
- 输出重定向和错误重定向 - > / 2>。
- 输入重定向 - <。
别名
- alias
- unalias
其他程序
- 时间和日期 - date / cal。
- 录制操作脚本 - script。
- 给用户发送消息 - mesg / write / wall / mail。
文件系统
文件和路径
- 命名规则
- 扩展名
- 隐藏文件
- 工作目录和主目录
- 绝对路径和相对路径
目录结构
- /bin - 基本命令的二进制文件
- /boot - 引导加载程序的静态文件
- /dev - 设备文件
- /etc - 配置文件
- /home - 用户主目录的父目录
- /lib - 共享库文件
- /lib64 - 共享64位库文件
- /lost+found - 存放未链接文件
- /media - 自动识别设备的挂载目录
- /mnt - 临时挂载文件系统的挂载点
- /opt - 可选插件软件包安装位置
- /proc - 内核和进程信息
- /root - root账户主目录
- /run - 存放系统运行时需要的东西
- /sbin - 超级用户的二进制文件
- /sys - 设备的伪文件系统
- /tmp - 临时文件夹
- /usr - 用户应用目录
- /var - 变量数据目录
访问权限
- chmod。
- chown。
磁盘管理
- 列出文件系统的磁盘使用状况 - df。
- 磁盘分区表操作 - fdisk。
- 格式化文件系统 - mkfs。
- 文件系统检查 - fsck。
- 挂载/卸载 - mount / umount。
编辑器vim
-
启动和退出
-
命令模式和编辑模式
-
光标操作
-
文本操作
-
查找和替换
/正则表达式
:1,$s/正则表达式/替换后的内容/gice
g - global
i - ignore case
c - confirm
e - error
-
参数设定
.vimrc
set ts=4
set nu
-
高级技巧
- 映射快捷键
- inoremap key:...
- 录制宏
- 在命令模式下输入qa开始录制宏(qa/qb/qc/qd)
- 执行你的操作,这些操作都会被录制下来
- 如果要录制的操作完成了,按q结束录制
- @a播放宏(1000@a - 将宏播放1000次)
- 映射快捷键
环境变量
- HOME
- SHELL
- HISTSIZE
- RANDOM
- PATH
软件安装和配置
yum
- yum update
- yum install / yum remove
- yum list / yum search
- yum makecache
rpm
- rpm -ivh --force --nodeps
- rpm -e
- rpm -qa | grep
源代码构建安装
- ...
- make && make install
实例
- 安装MySQL。
- 安装Redis。
- 安装NginX。
配置服务
- systemctl start / stop / restart / status
- systemctl enable / disable
- 计划任务 - crontab。
- 开机自启。
网络访问和管理
- 通过网络获取资源 - wget。
- -b 后台下载模式
- -O 下载到指定的目录
- -r 递归下载
- 显示/操作网络配置(旧) - ipconfig。
- 显示/操作网络配置(新) - ip。
- 网络可达性检查 - ping。
- 查看网络服务和端口 - netstat。
- 安全文件拷贝 - scp。
- 安全文件传输 - sftp。
Shell和Shell编程
- 通配符。
- 后台运行。
其他内容
- awk
- sed
- xargs