由于C高级部分比较零碎,各部分之间没有联系,所以学起来比较累,多练习就好了
一丶Linux起源
寻·科普|第二期:聊聊Linux的前世今生
(1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。
(2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
了解不同操作系统的内核:
windows - NT ubuntu - linux Android - linux macOs ios - unix
二丶Linux分层结构
内核层:五大功能:进程管理、设备管理、内存管理、网络管理、文件系统管理
驱动:字符设备驱动、块设备驱动、网络设备驱动
硬件:鼠标、键盘(字符设备驱动)、硬盘、U盘(块设备驱动)等
三丶Linux命令
1.基本命令
(1).查看ubuntu版本:
sudo lsb_release -a 或 cat /etc/issue
(2).查看内核版本
uname -r 或 cat /proc/version
(3).系统关机重启命令
sudo shutdown -h now: 立即关机
sudo shutdown -r now: 立即重启
sudo reboot now: 立即重启
sudo shutdown -h 时间 "提示语句": 定义关机
sudo shutdown -r 时间 "提示语句": 定义重启
通过 shutdown -c: 可以取消定时操作
(4).历史记录
echo $HISTSIZE: 将变量的值打印到终端,echo命令作用是打印内容到终端
HISTSIZE=10: 临时修改变量的值(只在当前终端有效)
在家目录下的隐藏文件,通过vi打开:
.bash_history:默认存放2000条历史记录命令的文件
.bashrc :定义HISTSIZE(使用history时默认显示的记录个数)和HISTFILESIZE(.bash_history文件可以存放命令的个数)变量的脚本文件
修改.bashrc文件中HISTSIZE的值,将终端退出:可以永久修改
(5).起别名命令
alias: 查看系统中起别名的命令
alias 新名='原来的命令': 起别名
unalias 新名: 取消别名
2.系统维护命令
(1).man
man man: 查看man手册
1 Executable programs or shell commands 可执行程序或shell命令
2 System calls (functions provided by the kernel) 系统调用
3 Library calls (functions within program libraries) 库函数
su root: 切换到超级用户
sudo su 用户名: 切换用户
退出:exit(或者 ctrl d 快捷键)
(3).df命令
df -Th: 查看磁盘使用情况
(4).mount
作用: 文件系统的挂载
sudo mount -t 设备类型 设备名称 挂载点: 挂载设备
sudo umount 挂载点: 卸载设备
注意:卸载时不要在挂载点卸载
补充:
1. 挂载优盘时,出现u盘识别不出的现象,解决办法:
1)虚拟机->设置->usb控制器->兼容usb3.0
2)虚拟机->可移动设备->找到自己的u盘->连接
2. 如果出现u盘类型不匹配的问题
sudo apt-get install exfat-fuse exfat-utils
3.用户管理命令
sudo adduser 用户名: 添加用户
4.进程管理命令
(1).ps
什么是进程? 就是程序的一次执行过程,是动态的。
ps -aux: 显示当前系统中运行的进程(包含进程的状态)
ps -ef: 显示当前系统中运行的进程(包含进程的父进程号PPID)
表头 | 含义 |
USER | 该进程是由哪个用户产生的。 |
PID | 进程的 ID。 |
%CPU | 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。 |
%MEM | 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。 |
VSZ | 该进程占用虚拟内存的大小,单位为 KB。 |
RSS | 该进程占用实际物理内存的大小,单位为 KB。 |
TTY | 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?是守护进程,也就是一开始启动时系统在后台运行的进程。(后面IO会讲) |
STAT | 1. D uninterruptible sleep (usually IO) 不可中断的睡眠态 2. R running or runnable (on run queue) 运行态 3. S interruptible sleep (waiting for an event to complete) 可中断的睡眠态 4. T stopped by job control signal 暂停态 5. t stopped by debugger during the tracing 因为调试而暂停 6. X dead (should never be seen) 死亡态 7. Z defunct ("zombie") process, terminated but not reaped by its parent 僵尸态 8. < high-priority (not nice to other users) 高优先级 9. N low-priority (nice to other users) 低优先级 10. L has pages locked into memory (for real-time and custom IO) 锁在内存中 11. s is a session leader 会话组组长 12. l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)多线程 13. + is in the foreground process group 前台进程 14. 没有+时,默认是后台进程 15. I 空闲状态进程 |
START | 该进程的启动时间。 |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间。 |
COMMAND | 产生此进程的命令名。 |
(2).top
shift >: 向下翻页 shift <: 向上翻页 q: 退出
(3).修改优先级
PR = NI + 20
NI值范围:-20~19, NI值越小优先级越高
sudo renice NI值 PID: 改变正在运行进程的优先级
四丶Linux安装工具
1.软件包安装
(1).软件包管理机制
debian: deb软件包管理机制
redhat: rpm软件包管理机制(Red Hat Package Manager)
(2).软件包分类
二进制软件包:xx.deb 源码包:xx.dsc
(3).软件包管理工具
dpkg和apt-get
区别:dpkg:离线安装,安装本地包,不能检查软件包的依赖关系,不关系仓库内的软件。
apt:在线安装,通过仓库获取软件包资源,解决依赖关系,不能安装本地包。A -> B
仓库:托管可安装软件包的公共服务器,用户从服务器获取软件并将其安装至用户计算机。类似于应用商店。
2.dpkg工具
软件包命名:
dpkg命令:
sudo dpkg -i 软件包的完整名称:安装软件
sudo dpkg -r 软件名 :卸载软件
sudo dpkg -s 软件名 :查看软件的安装状态
sudo dpkg -P 软件名 :完全卸载
sudo dpkg -L 软件名 :列出软件目录信息
3.apt工具
特点:安装时不需要软件包存在,需要从镜像站点获取软件包,需要网络,能检查软件之间的依赖关系
apt-get:
sudo apt-get install 软件名:下载并安装软件
sudo apt-get remove 软件名:卸载软件
sudo apt-get --purge remove 软件名:完全卸载
/var/cache/apt/archives --》 下载的软件的安装包默认的存放路径
sudo apt-get clean:清除下载的软件包
sudo apt-get update :更新源
sudo apt-get upgrade :(升级)更新安装软件
sudo apt-get download 软件名:下载软件包
sudo apt-get source 软件名:下载源码包
apt-cache:
sudo apt-cache show 软件名:获取二进制包的描述信息
sudo apt-cache policy 软件名:查看软件安装状态
sudo apt-cache depends 软件名:查看依赖的软件
sudo apt-cache rdepends 软件名:查看谁依赖我
ping 网址 或 ip地址 ---> 查看虚拟机是否可以上网
4.ubuntu网络配置
1.桥接模式:
(1) 编辑->虚拟网络编辑器->更改设置->选择vmnet0->桥接模式->桥接的网络适配器(根据主机的网络连接进行选择,当然选择自动也可以)->确定,如果自动不行也可以找到对应的网络适配器。
(2)虚拟机->设置->网络适配器->选择nat模式
五丶shell
1.概念
shell是贝壳的意思,起到保护作用。那linux的shell可以保护内核。
作用: 负责把应用程序的输入命令信息解释给操作系统,讲操作系统指令处理后的结果再回馈给应用程序。
2.命令执行的过程
3.shell 命令格式
命令名称 选项 参数
命令名称:必须得有
选项和参数:可有可无,选项有-符号
4.shell中的特殊字符
(1).通配符
当用户需要用命令处理一组文件,例如 file1.txt、file2.txt、file3.txt、file4.txt ……,用户不必输入所有文件名。可以使用shell通配符。
通配符 | 含义 |
* | 匹配任意长度的字符 |
? | 匹配一个长度的字符 |
[] | 匹配其中指定的一个字符 |
[-] | 匹配指定一个字符范围 |
[^] | 除了其中指定的字符均可以 |
● 用 file_*.txt,匹配到file_aa.txt、file_bb.txt、file_abcd.txt 能匹配到的,file1_cc.txt则匹配不到(命令后面单独使用 * 表示全部,如:rm *:表示删除全部文件)
(2).管道 |
格式: 命令1 | 命令2
作用:将前一个命令的输出作为下一个命令的输入
wc -c 文件夹名:文件字符个数
wc -m 文件名:计算文件字节大小
wc -w 文件名:文件单词个数
(3).输入输出重定向
>>文件名:输出重定向,追加模式
2> 或者&>文件名: 将有命令产生的错误信息输出到文件中
<文件名:输入重定向
(4).命令置换符 ``
5.echo 命令
向终端输出指定内容
echo 字符串: 向终端输出指定内容
-n: 不换行输出
echo "字符串": 原样输出