1 、 Linux 操作系统概述admin 管理员组文章数量: 887021
- Linux 操作系统的发展过程、创始人、 GNU 计划等
- Linux 操作系统的组成,内核的含义
- 了解 Linux 操作系统的特点,优缺点以及 Linux 操作系统的发行版本
- 什么是 shell ,常见的 shelll 类型,默认的 shell
- Linux 树形目录的含义
-
Linux
的目录结构中主要的目录有:
- / :根目录,最特殊的目录,所有目录的起点;
- /home :除 root 以外的用户主目录都在这里;
- ~ :指代每个用户的主目录( /home/ 用户名);
- /bin :存放 Linux 的常用命令;
- /boot :内核和启动文件所在目录;
- /etc :系统多部分配置文件所在之处;
- /dev :所有设备文件保存在这;
- /mnt: 这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。
- /media: 一般用于自动挂载,系统自动挂载的光盘、 u 盘文件系统都在这下面。
- /proc :在磁盘上实际不存在,里面的文件是动态生成的,根据执行的命令,采集系统进程运行状态等信息形成文件放在该目录下。
- shell 常用基本命令的使用,以及常见的基本参数
cd 目录名(或指代符号) 进入到指定的目录中,常用指代符号有: “ .. ”当前目录的上一级目录, “ ~ ”用户的主目录 “ - ”上一次变更当前目录前所在的目录。
设置普通用户的权限 在 root 用户下 vi /etc/sudoers su 切换到 root 用户权限 echo 命令 用于在终端显示字符串或变量,格式为:“ echo [ 字符串 | 变量 ] ” 用 echo 命令查看 SHELL 变量的值(前面有 $ 符号): # echo $SHELL 看本机主机名: # echo $HOSTNAME date 命令 date 命令用于显示 / 设置系统的时间或日期,格式为:” date [ 选项 ] [+ 指定的格式 ] ”。
reboot 命令 用于重启系统 ( 仅 root 用户可以使用 )
wget 命令 用于使用命令行下载网络文件 格式为: wget [ 参数 ] 下载地址
find 命令 例: find /home -name “hello” -atime +5 -ok rm -f {} \; 参数: -atime: 在指定时间内被存取过的文件,小时为单位 -amin: 在指定时间内被存取过的文件,分钟为单位 -ctime: 指定时间内被更改的文件,小时为单位 -cmin: 指定时间内被更改的文件,分钟为单位 ifconfig 用于获取网卡配置与网络状态等信息 格式为 ifconfig [ 网络设备 ] [ 参数 ] ”。 查看本机当前的网卡配置与网络状态等信息: # ifconfig uname 命令用于查看系统内核版本等信息 格式为 uname [-a] 查看系统的内核名称、内核发行版、内核版本、节点名、硬件名称、硬件平台、处理器类型、操作系统等 # uname –a who 命令 用于查看当前登入主机的用户情况, 格式为: who [ 参数 ]
last 命令 用于查看所有系统的登入记录, 格式为: last [ 参数 ]
看看当前登录的哪个 shell ? echo $SHELL 显示系统变量 SHELL 的值
用 type 命令可以准确的告诉你一个可找到的命令的类型和位置 type ksh exit 命令 退出到控制台终端的 login (登录)界面 退出虚拟终端,回到图形桌面 命令输入时的快捷键 tab 自动补齐命令 输入命令的几个开始字符,按 TAB 可自动补齐命令 反斜杠“ \ ”:强制换行 快捷键 Ctrl+U :清空至行首 快捷键 Ctrl+K :清空至行尾 快捷键 Ctrl+L :清屏 快捷键 Ctrl+C :取消本次命令编辑 快捷键 Ctrl+D 发送一 exit 信号,没有那么强烈 Home :跳到行首 End :跳到行尾
清除历史命令
- 执行: history -c
- !n :执行历史记录中的第 n 条命令
top 命令 动态监控 linux 系统状况,用于实时显示进程的状态。 ps 命令 提供进程过去信息的一次性快照
磁盘挂载 1 fdisk –l 查看所有挂载硬盘 3. 执行命令 mkdir /mnt/usb 自建一个空目录 mount -t vfat /dev/sdc1 /mnt/usb 执行挂载命令 mount 查看所有挂载情况 4. 可以进入目录操作 U 盘了 在 u 盘上建文件 cd /mnt/usb ls vi my.txt 按 i ,进入编辑,写些内容。按冒号进入末行模式,输入 wq 保存退出。 ls 显示 U 盘文件, my 文本文件已经存在了:) 复制文件到 u 盘 cd ~ 到用户目录下新建文件后复制到 u 盘 touch my2.txt cp my2 /mnt/usb 5.** 卸载 ** 保证所有的终端或窗口都不在 usb 目录下 umount /dev/sdc1 点掉虚拟机菜单中的可移动设备, u 盘就会转回被 windows 识别
文件管理 目录操作: ls 浏览目录; Mkdir 新建目录、 rmdir 删除目录; pwd 显示当前目录、 cd 进入目录 cp 复制文件、 mv 移动文件(重命名)、 rm 删除文件 touch 新建文件、 ln 建文件链接 输出文件内容: cat 、 more 可向后翻页、 less 前后翻页 部分输出文件内容: cut 、 head 查找文件: find 、 locate , grep (按文件内容与指定的字符串匹配查找文件,涉及正则表达式) chmod 设置文件权限 其他: *sort 、 wc 、 comm 、 diff 、 clear 清屏、 tar 压缩包处理
进程管理 查看进程状态: ps 、 top 进程控制: kill 、 bg 、 fg
用户管理 passwd 设置密码、 who 查询当前登录用户 useradd 、 usermod 、 userdel groupadd 、 groupmod 、 groupdel su 、 sudo 换为 root 身份
磁盘管理 fdisk 、 mount 挂载磁盘 df 、 du ,查看磁盘空间
网络管理 ifconfig ping 、 traceroute 、 netstat 、 arp 、 ftp
帮助及其他 man , info cal 、 history
- 管道、别名、重定向的使用
输入输出流的重定向 输入 获得键盘输入后写入到 testfile 中,按 ctrl+d 结束输入。 cat >testfile 从 test.sh 获得输入数据,然后输出给 catfile 文件 cat >catfile <test.sh 输出 > 会覆盖文件原内容; >> 则是在原内容后追加 可利用重定向快速建立文件: echo “hello” >testfile 0 代表 stdin 标准输入 1 代表 stdout 标准输出 2 代表 stderr 标准错误输出
- 命令 >file (默认为 1 )
- 命令 2>file
- cp 命令没有目标文件 , 应该输出错误。
- 2>&1 表示错误重定向指向标准输出。
- >/dev/null 又使标准输出重定向到空设备,最后就是没有任何输出信息。
压缩文件命令 tar –zxvf a.gz 该命令将压缩包 a.gz 解压 -z 说明是解压 .GZ 类型文件 -x 说明是解压操作 -v 显示详细信息 -f 必须,表示使用归档文件
帮助命令
- [ 命令 ] —— help
-
man [
命令
]
- man [ 选项 ] 命令名称
- 常用选项 说 明
- -S 根据章节显示,一个命令可能会有很多类别,类别说明见下表
- -f 只显示出命令的功能而不显示其中详细的说明文件
- -w 不显示手册页,只显示将被格式化和显示的文件所在位置。
- -a 显示所有的手册页,而不是只显示第一个。
- -E 在每行的末尾显示 $ 符号
- 举例
- 1 )
- man passwd
- man – S 5 passwd
- 2 ) open,kill 这种既有命令 , 又有系统调用,也可用章节限定查找的范围
- man open 显示的是 open(1), 即最前面 section
- man 2 open 查看 open 系统调用
- info [ 命令 ]
-
几个操作命令
- q: 退出 man 状态
- enter: 逐行阅读 man 文件
- 空格键:逐页阅读 man 文件
- b 键:向前翻页
- /string: 查找 string 字符串
cal 命令
- 语法: cal [ 参数 ] … [ [ 月份 ] 年份 ]
- 说明:显示指定月份的日历,默认为当前月份。
-
参数说明:
- -3 显示指定月份的前一个月、指定月份、下一个月三个月的日历
- -m 以“星期一”为星期的起始
- -w 在每栏下面显示星期数
- -y 显示指定年份所有月份的日历
history
- 语法: history [ 参数 ]
- 说明:显示输入过的所有命令。
搭配 grep 的正则表达式
- ∧表示开始位置, $ 表示结束位置, [a-z] 表示字符的范围,
- 查看以英文字母开头, / 结束的行
- ls -F |grep “[a-z]./$”
file 命令
- 语法: file [ 选项 ] … [-f] 文件 …
- 说明:显示指定文件的类型与编码格式。
-
参数说明:
- -b 以简明方式显示信息
- -f 指定该选项后面的字符串为文件列表
- -z 查看压缩文件内部的文件信息
- -d 显示调试信息
- 统计当前目录下的文件数和目录数
- # ls -l |grep "^-"|wc – l
cat 命令 将文件和标准输入设备的输入使用标准输出流输出。常被用来显示文件的内容。 cat /etc/passwd
-
参数说明:
- -b 对所有的非空行进行编号输出
- -n 对所有的行进行编号输出
- -T 将所有的“ Tab ”显示成“ ^I ”
- -s 对于连续出现的多个空行,仅输出一个空行
- -E 在每行的结束位置输出“ $ ”
more 命令 显示文件内容,每次显示一屏。常与其他命令结合使用: ls - – help |more
- 注意: more 命令中按“ ENTER ”是向后移动一行,按“ SPACE ”是向后移动一页,按“ q ”退出。
less 命令 ls - – help |less 与 more 相似,但浏览文本时允许翻页来回看。 Less 并不在一开始就读入整个文件,因此在打开大型文件时比 vi 等文本编辑器快。
cut 命令 截断显示文件中的内容,常用于对 /etc/ passwd 类的文件进行处理 :
- 显示每行从开头算起 n1 到 n2 的文字。
- 以空格为分隔符,显示第 2 个字段
sort 命令 对文件内容进行排序显示: cat /etc/passwd 默认是按进程号排序 sort – t ’ : ’– k3 -nr /etc/passwd 参数说明:
- - t 分隔符:使用分隔符隔开不同区块,默认是 tab
- + start -end :由第 start 区块排序到 end 区块
- - n :使用纯数字排序(默认是以字母方式排序)
- - r :反向排序
- - u :相同出现的一行,只列出一次
- -k: 按那个字段来进行排序
touch 命令 创建新文件、修改文件时间 touch newfile1 touch – a – t 200012301111 newfile1 修改文件访问时间为 2000.12.30 , 11 : 11 。
-
参数选项:
- -a: 仅修改文件访问时间 access tiem
- -m :仅修改文件修改时间 mtime
- -c: 仅修改时间,而不建立文件
- -d :后面可以接日期,也可以使用 – date= “日期或时间”
- -t: 后面可以接时间,格式为【 YYMMDDhhmm 】
mv [ 选项 ] 源文件或目录 目标文件或目录
- -f 若目标文件或目录名已存在则直接覆盖(缺省参数复制文件时也是覆盖)
- -i 覆盖前先行询问用户。
- -u 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
- -v 执行时显示详细的信息。
-
-b
若需覆盖文件,则覆盖前先
backup
- -S< 附加字尾 > ,与 -b 参数一并使用,可指定备份文件的所要附加的字尾。
cp [ 选项 ] 源文件 目标文件
-
- a
常在拷贝目录时使用。保留链接、文件属性,并递归地拷贝目录,作用等于
dpr
选项的组合。
- - d 拷贝时保留链接。
- - p 把修改时间和访问权限等属性也复制到新文件
- - r 此时目标文件必须为一个目录名。将递归复制该目录下所有的子目录和文件。( -R ,一般与 -r 等价,但递归复制特殊文件如 FIFO 文件或 /dev/zero 的时候,用 -R )
- - f 目标文件已存在的直接覆盖而不提示。
- - i 覆盖目标文件之前给出提示需求用户确认。
rm [ –参数 ] 文件或目录 默认删文件或目录时不询问确定,
- -i 删除前先询问用户。
- -f 强制删除。
- -r 递归处理,将指定目录下的所有文件及子目录一并处理 ( 或 -R) 。
- -v 显示指令执行过程
tar - 主选项 [ 辅选项 ] 包名 [ 文件或者源 / 目的目录 ]
-
主选项:必须要有
- -c 建立新的备份文件
- -x 从档案文件中释放文件
- -t 列出备份文件的内容
- -r 追加新文件到已存在的备份文件
- -u 用新文件更新包里的文件,如果文件没有,则追加到包的最后
-
辅选项:
- -f 使用档案文件或设备,这个选项通常是必选的,且写在选项的最后。
- -v 详细报告 tar 处理的文件信息。
- -C 释放包时指定释放的位置
- -z 用 gnzip 压缩处理备份文件
- -j 用 bzip2 压缩,压缩率大于 -z
- 内置命令
- 外部命令(对应一个程序文件,执行该命令时,由 shell 根据路径环境变量查找到命令对应的文件,触发其执行)
-
查询系统中所有用户
- alias alluser= ‘ cut – d ‘ : ’ -f1 /etc/passwd ’
-
查看普通用户
- alias user= ‘ cut – d ‘ : ’ -f1,6 /etc/passwd |grep /home ’或‘ grep /home /etc/passwd |cut – d ‘ : ’ -f1,6 ’
- -d 删除指定用户的密码
- -l 锁定指定的用户
- -u 解除指定用户的锁定
- -wn 设定 n 为密码过期警告的天数
- - c 全名:指定用户的全称
- - d 主目录:指定用户的主目录
- …
- - r 选项,系统不仅将删除此用户帐号,并且还将用户的主目录也一并删除
- 主要选项说明:
- usermod -G 附属组 1, 附属组 2 , ..., 附属组 X 用户名
- 为防止覆盖原来为“附属组名”,可添加 -a 参数:
- 格式: groupadd [-g GID] 组帐号名
- 格式: groupmod [ 选项 ]... 组帐号名
- 格式: groupdel 组帐号名
- 文字设定法
-
- u: 所有者; g: 同组用户; o: 其他用户; a :所有用户(默认)
- r ; w ; x ; (其他属性 s , t , u , g , o )
- 数字设定法
-
查看下新建的文件或目录一般是什么权限?
- 文件 664
- 目录 775
- 查看系统默认设置的权限掩码 umask, 发现普通用户和 root 不同 , 为了安全, root 掩掉的权限位多
-
将当前目录下的所有的
C
语言程序文件拷贝至
Finished
子目录中
- cp *.c Finished
-
删除所有自建的测试文件(命名风格要统一才方便批量处理)
- rm test*
- rm – r dir*
-
[-]
代表的是一个范围
- [a-z] 表示可以是字母 a 到 z 之间的字母
-
[^] ^
是反向选择符号从字面意思可以知道也就是非的意思
- [^abc] 表示只要不是 a b c 这三个字符中的任意一个就选择
- 通过括号扩展可以生成需要的字串,括号中可以包含连续的序列或使用逗号分隔的多个项目,连续的序列包括一个起点和一个终点
- #echo {a,b,c}
- a b c
- $# 命令行参数个数
- $* “参数 1 参数 2 …”形式保存的所有参数
- $@ “参数 1 ”“参数 2 ”…形式保存的所有参数
- $n 第 n 个参数
- $? 前一个命令或函数的返回码
- $0 当前程序名
- $$ 本程序的 PID
- $! 上一个命令的 PID
- mkdir shdir && cd shdir
- vi hello
- chmod 755 hello
- cd ~
- export PATH=$PATH:$HOME/shdir
- 在任何目录下,输入 hello 即可执行该文件。
- 直接赋值
- 将一个命令执行的输出赋给指定的变量
- 从标准输入设备读入用户输入的值
-
硬链接(
Hard Link
)默认情况下,
ln
产生硬链接。原文件和连接文件的
FCB
记录了相同的
inode
地址。
- 建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接
- ln newfile oldfile
-
符号链接(
Symbolic Link
)。
和
win
下的快捷方式差不多。
包含所链接文件的路径。可链接任意文件或目录,可链接不同文件系统的文件,甚至可以链接不存在的文件,网络文件。
- ln -s newfile oldfile
-
文件系统开机自动挂载
(
永久挂载
)
- /etc/fstab 配置文件
- 包含了需要开机后自动挂载的文件系统记录
-
分区工具
fdisk
- fdisk -l 列出硬盘分区信息
- fdisk /dev/sda 交互模式操作 sda 设备
- m 显示所有可用命令
- p 显示硬盘分区信息
- n 、 e 、 p 创建新、扩展、主分区
- t 更改分区文件系统
- d 删除硬盘分区
- w 、 q 保存、不保存退出
-
格式化文件系统
mkfs
- mkfs 参数 – t 文件系统类型 设备名
-
jobs
命令可查看后台作业清单
- 作业号 状态 命令名
- fg 作业号:将任务放回前台执行
- bg 作业号:将任务放到后台执行
- find / -name f*
-
at
命令
- 在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
- 服务脚本名称: /etc/init.d/atd
- 设置格式: at [HH:MM] [yyyy-mm-dd]
-
管理
cron
计划任务
- 编辑计划任务: crontab -e [-u 用户名 ]
- 查看计划任务: crontab -l [-u 用户名 ]
- 删除计划任务: crontab -r [-u 用户名 ]
- 查看网卡信息
- 给网卡手动添加一个地址
- 删除一个地址
- 看网关
- 看 DNS
- nmcli 强大之处在于
- 使用一条命令实现 ifconfig 、 route 、 ip 等其他的功能
- ②做的修改可以自动同步到配置文件之中长期有效,不需手工修改配置文件,
- 输入 nmcli ,按 Tab ,系统会提示该命令后面作用于的对象名
-
参数说明:
- -b 目标地址允许是广播地址
- -c N 设置发送的次数
- -i 间隔 设置发送报文间的间隔,默认值为 1 秒
- -n 仅适用数字输出
- -q 不输出每次发送报文的结构,仅显示综合信息
- -v 输出更多的信息
- 编译执行
-o | 指定输出的文件名 |
-g | 产生符号调试工具 (GNU 的 GDB) 所必要的符号信息,要想对源代码进行调试, 必须加入这个选项。 |
- gcc 是 c 语言程序编译器。一个 C 语言程序编译过程如下:
- 编辑:写源码
- 预处理:系统加载头文件和展开宏,仅对文本信息处理,是编译前的准备、整理。
- 编译:将 C 语言转换为对应的计算机机器码,生成二进制文件。但若有多个模块,此时的文件还不能执行,因为各模块还相对独立,相互使用的地方还是标记。
- 链接:将模块合成一个可执行的整体。
- Fork() -父亲克隆一个儿子。执行 fork() 之后,兵分两路,两个进程并发执行。
-
子进程克隆父进程
- 父子进程内存空间代码相同,除非儿子用 exec 另启门户做其他工作。
-
一次调用,两个返回值
- fork 调用后,系统会在子进程中设置 fork 返回值是 0 ,而父进程内存空间中 fork 的返回值则是子进程的 pid 。
- Exec() -新进程脱胎换骨,离家独立,开始了独立工作的职业生涯。
-
Wait()
-等待不仅仅是阻塞自己,还准备对僵死的子进程进行善后处理。
- 阻塞自己,等待第一个僵死子进程,进行下面操作,否则一直阻塞下去。
- 收集僵死子进程信息
- 释放子进程 pcb ,返回
- 调用成功,返回被收集子进程的 PID ;如果没有子进程,返回 -1 。
- Exit() -终止进程,把进程的状态置为 “ 僵死 ” ,并把其所有的子进程都托付给 init 进程,最后调用 schedule() 函数,选择一个新的进程运行。
- 正常结束还是被退出
- 占用总系统 cpu 时间和总用户 cpu 时间
- 缺页中断次数,收到信号数目等
- 利用参数 status 传递进程结束时的状态
- 关于并发顺序
- 因为 fork 将父进程资源设为只读,只要父进程进行修改,就要开始 “ 写时复制 ” ,把父进程要改的页面复制给子进程(写子空间)。
- 继续运行,一旦子进程被调度到,它往往要用 exec 载入另一个可执行文件的内容到自己的空间(又写子空间),可见上步的写入就多余了。
- 子进程调用 exec 使地址空间被填入可执行文件的内容,子进程的 PID 不变,但进程功能开始有别于父进程。
- 注意 exec 函数执行成功就会进入新进程执行不再返回。所以子进程代码中 exec 后的代码,只有 exec 调用失败返回 -1 才有机会得到执行。
- 孤儿进程问题
- 在当前进程 / 线程组内找个新父亲
- 或者,让 init 做父亲
- 僵尸进程只能通过父进程 wait 回收它们,他们是不能用 kill 命令清除掉的,因为 kill 命令只是用来终止进程的,而僵尸进程已经终止了。
版权声明:本文标题:linux基础知识大纲 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729151604h1324275.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论