1.25k likes | 1.47k Views
College of Information Science and Engineering. Linux 使用. —— 基本 shell 命令. Shandong Agricultural University. Shell 简介. Linux 目录结构. Linux 命令分类详解. Linux 目录结构. 目录结构 配置文件. 1 、目录结构. Linux 的目录结构中主要的目录有: / :根目录,最特殊的目录,所有目录的起点; /home :除 root 以外的用户主目录都在这里; ~ :指代每个用户的主目录( /home/ 用户名);
E N D
College of Information Science and Engineering Linux使用 ——基本shell命令 Shandong Agricultural University
Shell简介 Linux目录结构 Linux命令分类详解
Linux目录结构 • 目录结构 • 配置文件
1、目录结构 • Linux的目录结构中主要的目录有: • /:根目录,最特殊的目录,所有目录的起点; • /home:除root以外的用户主目录都在这里; • ~:指代每个用户的主目录(/home/用户名); • /bin:存放Linux的常用命令; • /boot:内核和启动文件所在目录; • /etc:系统多部分配置文件所在之处; • /dev:所有设备文件保存在这; • /mnt: 这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。 • /media:一般用于自动挂载,系统自动挂载的光盘、u盘文件系统都在这下面。 • /proc:在磁盘上实际不存在,里面的文件是动态生成的,根据执行的命令,采集系统进程运行状态等信息形成文件放在该目录下。
Windows下目录:按照应用程序分目录组织。 C:\Windows放系统文件;D:\Program Files放程序相关文件等。 • Linux目录结构:目录按照内容类别组织。 逻辑上有一个最高级别的根目录“/”,其他所有的目录内容按照类别组织。乍一看很多,实际并不复杂。 例如,一个Linux下的应用程序, • 它的可执行程序在/usr/bin, • 它的数据文件和帮助在/usr/share下, • 运行时加载的配置文件是从/etc下读取, • 用户使用它编辑的内容则放在/home下面自己的目录中。
/ 根目录 │├boot/ 启动文件。所有与系统启动有关的文件都保存在这里│ └grub/ Grub引导器相关的文件│├dev/ 设备文件├proc/ 内核与进程镜像│├mnt/ 临时挂载├media/ 挂载媒体设备│├root/ root用户的$HOME目录├home/│ ├user/ 普通用户的$HOME目录│ └.../│├bin/ 系统程序├sbin/ 管理员系统程序├lib/ 系统程序库文件
├etc/ 系统程序和大部分应用程序的全局配置文件│ ├init.d/ SystemV风格的启动脚本│ ├rcX.d/ 启动脚本的链接,定义运行级别│ ├network/ 网络配置文件│ ├X11/ 图形界面配置文件│├usr/│ ├bin/ 应用程序│ ├sbin/ 管理员应用程序│ ├lib/ 应用程序库文件│ ├share/ 应用程序资源文件│ ├src/ 应用程序源代码│ ├local/│ │ ├soft/ 用户程序│ │ └.../ 通常使用单独文件夹│ ├X11R6/ 图形界面系统│├var/ 动态数据│├temp/ 临时文件├lost+found/ 磁盘修复文件
常用文件类型 • 普通文件 • 目录文件 • 链接文件 • 设备文件 • 管道文件 • 文件中体现的面向对象思想 • 即使linux是用c写的,还是有面向对象的思想在里面。如Linux把设备也当文件来操作。这就是把资源抽象成文件,用统一的读、写命令即可操作不同种类的资源。
2、配置文件 配置文件就像 Windows的注册表一样关系着Linux 的正常使用,大部分在/etc/下。各种“Linux 发行版”的图形配置工具往往不完善,可以通过直接修改配置文件实现各种设置。 注意:只有root权限才能修改配置文件,且修改前最好将文件复制一份,一旦出问题方便恢复。 常用的配置文件需要的时候再查,不同发行版各有不同: • /etc/network/interfaces 网卡配置 • /etc/apt/sources.list 软件包更新的网络源 • /boot/grub/grub.cfg(ubutu) grub设置 • /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.从/etc/profile.d目录的配置文件中搜集shell的设置. • /etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. • ……
SHELL简介 • shell是什么 • shell的种类 • shell的实用功能
Linux启动过程说明 • 打开PC的电源 • BIOS开机自检 • 按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux • 操作系统内核的引导(内核程序进内存) • 执行init程序(操作系统开始初始化) • 启动getty,等待用户登录系统 • 命令行登录成功后进入Shell • 图形界面登陆,启动shell,startx
1、shell是什么? • Shell:字面意思“壳”;引申一下就是人机界面。是linux里用户使用Linux的桥梁(命令接口)。是C语言编写的一个命令解释程序,解释执行用户命令或脚本程序。 • 特点:既是一种命令语言,又是一种程序设计语言。 • 命令语言:交互式解释、执行用户输入的命令; • 程序设计语言:用于写shell脚本,非交互的执行。有自己的语法,定义了各种变量和参数,提供许多在高级语言中才有的循环、分支等控制结构。
Shell的启动与退出 • 系统启动自动根据配置信息启动shell,根据用户启动的模式不同,shell表现为 • 全屏控制台终端:系统启动即启动shell。 • 桌面终端:用户通过桌面上的菜单启动,找到系统工具“终端”,打开即可启动shell虚拟终端。 • exit命令 • 退出到控制台终端的login(登录)界面 • 退出虚拟终端,回到图形桌面。
2、shell的种类 了解不同的 shell 及版本很有必要,不同系统的shell从名字到 path都有不同。当在不同平台之间移植脚本程序时,不同版本间还是存在着兼容的问题。 • Bourne [buən] Shell(sh) 最早的shell,在任何unix下都可以找到的shell,选择它你可以在各种unix上have a familar enviroment。用来编程时简单、快速、但交互性上有些不足。
Korn shell(ksh) 向下兼容Bourne Shell语法,增加了一些新的特性,并且运行速度较快,交互性也有提高。 • C shell(csh) 与bourne shell不同,脚本编程语法类似c语言,交互性比较好。 • BourneAgain Shell(bash) GNU计划的一部分,用来替代Bourne shell。编程语法与Bourne Shell相兼容,同时提供了C Shell和Korn Shell受人欢迎的特性。有灵活和强大的编程接口,同时又有很友好的用户界面。
大多数的Linux发行版(Red Hat, Slackware, Caldera等)都以bash作为缺省的shell: • /bin/bash • 看看当前登录的哪个shell? echo $SHELL 实际上就是显示系统变量SHELL的值。 • 更改默认shell sudo usermod -s /bin/ksh • 用type命令可以准确的告诉你一个可找到的命令的类型和位置 type ksh
3、Shell 实用功能 • tab自动补齐命令 输入命令的几个开始字符,按TAB可自动补齐命令 • 上、下光标键显示历史已经执行的命令 • 同行多命令的排列 • 分号 ls –l ;cd \ 先执行第一个命令,不管是否正确继续执行第二个 • && ls –l && cd \ 只有当第一个命令执行完毕后,执行第二个命令
④设置别名(alias) alias [别名]=[需要定义别名的命令] alias ll=‘ls –al’ 注意事项: • 等号两端不能空格,字符串最好加引号 • 浏览别名:$ alias • 取消别名:$ unalias 命令 • 写入配置文件:为命令取的别名在该次登录期间始终有效。若要别名在每次登录时都有效,需将alias命令写到初始化脚本文件中。
输入输出流的重定向 一般,默认的标准输入是键盘stdin,标准输出是stdout,标准错误输出stderr默认是显示器(终端), (分别是 0,1 和 2 ) • shell允许用户的输入输出不是标准设备。这就是输入输出重定向。 • 有关的字符: • 输入重定向: < 用的地方较少,如 wc -l -w < my.txt 统计文件 my.txt 中的行数和字数
输出重定向:>、>> ls > my.txt 浏览当前目录的信息,但是结果不再输出到终端显示,而是存到了my.txt文件中。 >会覆盖文件原内容;>>则是在原内容后追加 • 管道符“|” 前一个的结果作为后一个命令的输入 ls | head -5 浏览当前目录下的文件信息,但只显示前五条
Linux命令分类详解 • Shell命令格式 • 磁盘挂载使用U盘——体验设备与目录 • 常用命令分类详解
1、Shell命令格式 在shell里执行命令都有统一的格式: 命令 –参数 如:tar –zxvf a.gz 该命令将压缩包a.gz解压 • 一般命令都带有很多参数,不容易全记住,不同的发行版命令参数也略有不同。多使用多练习,还可用linux帮助命令查看: • 命令 --help • man 命令 • info 命令(支持文件的链接跳转) -z 说明是解压.GZ类型文件 -x 说明是解压操作 -v 显示详细信息 -f 必须,表示使用归档文件
Shell执行的命令分为: • 内置命令 例:whereis cd 没有结果,可见cd是内置命令 • 外部命令(对应一个程序文件,执行该命令时,由shell根据路径环境变量查找到命令对应的文件,触发其执行) 例:whereis ls 可看到它是在/bin目录下
2、磁盘挂载--使用U盘的操作实例 • 两个概念 • 设备文件: 所有的设备都在/dev下有对应的设备文件,U盘作为磁盘设备,linux把它识别为一个设备文件。fdisk –l,可查看全部设备号。 • 挂载: Linux中使用设备都需要将设备挂载到一个空目录,通过对目录的操作访问设备里的内容。mount 命令可将设备挂载到目录。 • 虚拟机环境下的U盘使用: • U盘设备被宿主机使用,可用虚拟机的设备菜单,找到usb设备选中,触发虚拟机检测usb设备。
具体步骤 *1.虚拟机菜单选中usb设备,不同的虚拟机需要做的操作也略有不同 2.插入U盘,观察自动提示的信息,找/dev/sd类或hd类的文字 或 用fdisk -l命令(前两项硬盘信息出的很快,U盘的信息需要执行一会才显示出来) Disk /dev/sdc:1055MB,10...bytes 2heads,63sectors/track,16355 cylinders units=.... Disk identifier:0x0011e973 Device Boot start end blocks id system /dev/sdc1 * 1 16356 1030384 b w95 FAT32 我的U盘被识别为设备文件/dev/sdc1
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识别
进程管理 用户管理 文件与目录操作 磁盘管理 网络管理 帮助及其他命令 ctal+alt+fn exit reboot init 0 shutdown halt poweroff 3、常用命令
文件管理 目录操作: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、arp、ftp 帮助及其他 man,info cal、history 常用命令分类列表 参考资料:【1】Linux常用命令全集.chm
实验小问题 • 文件名有空格怎么办? • 用引号 cp “1 file”file2 • 用转义符\ cp 1\ file file3 • 怎么对付“死机”、错误命令的耗时执行、终端不响应 • 快捷键(只对前台进程起作用) ctrl+c强行终止前台进程,相当于windows的alt+F4 ctrl+z 将前台进程挂起到后台 • 进程查看及终止命令 ps 、kill
进程管理 进程与作业的启动方式: • Shell命令直接启动: • 前台启动:输入Shell命令后,直接按回车键启动前台作业; • 后台启动:输入Shell命令的末尾空一格加“&”符号,回车将启动任务并放于后台执行。 • 调度启动 • 是系统按用户要求的时间或方式执行特定的进程。可通过at调度、batch调度和cron调度实现。
Linux 是一个多用户多任务系统。当处于某个控制终端上的用户按下了 Ctrl+C 键时(产生 SIGINT 信号),系统如何知道将该信号发送到哪个进程,从而不影响由其他终端上的用户运行的进程呢? Linux 内核通过维护会话和进程组管理多用户进程,如图所示。 一般而言,用户在某个终端上登录一个新会话就开始了。一个会话上有多个进程组。每个进程组由组中的领头进程标识(领头进程的进程标识符就是进程组的组标识符),同样一个会话也有一个领头进程,由它与一个终端相连,会话与控制终端是一对一的关系。 同一会话中只能有一个前台进程组,属于前台进程组的进程可从控制终端获得用户发来的键盘信号(ctrl+c; ctrl+z)。 • 守护进程,由于关闭了标准输出、标准输入、错误输出等描述符,一般都是终端无关的后台进程。
①【进程查看】——ps 最基本同时也是非常强大的进程查看命令。可以确定有哪些进程信息:运行的状态、是否结束、有没有僵死、哪些占用了过多的资源等。还可以监控不和屏幕键盘这些标准输入/输出设备进行通信的后台进程的工作情况。
参数说明 不同发行版命令参数的形式或有不同,以帮助为准。 带不带-,是否大小写都要注意
参数说明: • -A或-e 输出所有进程的信息 • -N 反向选中符合条件的进程,即不符合指定条件的进程被输出 • -a 输出除会话主进程外的当前控制台进程 • -d输出除会话主进程外的所有进程 • r 将输出数据的范围限制在正在运行的进程 • -C 命令名选择命令名为“命令名”的进程 • -u 用户名选择用户名为“用户名”的进程 • -p 进程号选择进程号为“进程号”的进程 • -F 以完全格式输出 • -M 输出安全数据信息 • s 显示信号格式 • v 显示可是内存模式 • -H 显示进程之间的继承关系 • c 显示真实的命令名 • e 显示环境信息 • -w 以加宽模式输出 • -H 以进程的模式显示线程
一次登录形成一个会话,一个会话占用一个控制台一次登录形成一个会话,一个会话占用一个控制台 • -A 输出所有进程信息 • -d输出除会话主进程外的所有进程 • -a 输出各会话(已登陆控制台)上除会话主进程外的控制台进程。 • a 所有控制台上的控制台进程,包括其他用户的进程。
ps常用操作 • ps aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 • ps –C 命令名:可查看某个执行中的命令名的进程号 • 例 • [root@localhost ~]# ps aux > ps001.txt[root@localhost ~]# more ps001.txt把所有进程显示输出到ps001.txt文件,然后再通过more分页查看。 • [root@localhost ~]# ps aux | grep tty
②【top】 和ps命令的基本作用是相同的,显示系统当前的进程及其状态,但是top是一个动态显示过程。 • 通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。 • 提供了实时的对系统处理器的状态监视。它可以显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序 • 它的很多特性都可以通过交互式命令、或者在个人定制文件中进行设定。
显示结果排序的操作 • 缺省按照cpu使用情况排序 • m键:按照内存排序 • t键:运行时间进行排序 • u键,键入用户名,查看某一用户的CPU使用情况 • k键,输入PID,可终止某一进程 • q键,退出top
③【结束进程】——kill • CTRL+C 结束前台进程 问:为什么用该快捷键无法结束find / -name xml &命令的执行? • Kill命令 通过向进程发送信号控制进程,可用于结束后台进程。 • –信号 或 -s 信号 :发送信号到指定的进程 • -l 信号 :将信号数值翻译成信号名称 常用:kill -9 PID 无条件撤销进程 即 kill -KILL PID 执行kill时一定观察好PID号,以免误删系统进程。 kill执行是否成功,可用ps检查被结束进程号是否还存在即可。
后台运行的进程,或不响应的进程只有用kill结束。后台运行的进程,或不响应的进程只有用kill结束。 • 本例先运行一个错误命令,然后用kill结束进程。 • ps查进程ID • Kill -9 3465
关掉死机的桌面或终端 1)默认启动进入命令行控制台终端tty1 • who 查看登录的用户情况 • ps –ax |grep tty 查看各终端上运行的进程
2)启动图形界面 tty1中执行startx启动图形桌面(tty7) • Ctrl+alt+f2启动另一个控制台终端
3)强制结束控制台终端 • kill -9 进程号 • 结束终端tty1 的 bash的进程号 kil -9 2012 由tty1的startx启动的tty7也会结束 • 若tty1是默认的桌面窗口界面。若在tty2下用前面的命令关闭tty1的终端进程,因为默认参数是启动窗口界面,所以系统可能会又自动启动桌面。
④【前台、后台】——jobs、fg、bg CTRL+Z 挂起当前的前台作业 • jobs命令可查看后台作业清单 • 作业号 状态 命令名 • fg 作业号:将任务放回前台执行 • bg 作业号:将任务放到后台执行 • find / -name f*
用户管理 • 两个重要的账户配置文件 • /etc/passwd: 管理用户主要是通过修改此配置文件完成的!可用cat命令浏览一下passwd的内容: 用户名:口令:标识号:组标识号:用户全称:主目录:登录shell 一个账户信息占一行,7个段位用“:”分隔。实际上除了root用户、普通用户外,还有许多虚拟用户,即系统运行需要的一些特定用户,这些用户一般不具有登录能力。 • /etc/shadow:实际存放用户口令的文件
Linux下没有很方便的查看用户的命令,一般都是通过显示用户配置文件查看用户,可将这些常用用户操作建立别名,并写入配置文件中(ubuntu:/etc/bash.bashrc)。 Linux下没有很方便的查看用户的命令,一般都是通过显示用户配置文件查看用户,可将这些常用用户操作建立别名,并写入配置文件中(ubuntu:/etc/bash.bashrc)。 • 查询系统中所有用户 • 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 ’
①【用户切换】——su 如果用户名省略则切换到超级用户,切换用户可能需要提供目标用户的密码 • 参数说明: • -l 重新加载登陆时的启动脚本 • -m 保留当前环境变量,不重新加载脚本 • su –用户名:可在切换身份同时保留root环境变量,且切换到用户主目录下
②【临时切换身份】——sudo 与su不同,它是在单条命令中临时切换到其它用户运行,运行后立即返回当前用户。默认情况下是超级用户。运行命令前系统可能会要求用户输入目标用户密码。 • 参数说明: • -b 后台运行命令,运行后立即返回提示符,而不是等待其运行结束后返回提示符。 • -H 使用目标用户的主目录 • -u{用户名|用户ID} 指定目标用户,缺省为超级用户 • 不是所有用户都能执行sudo,一般新建的用户默认不在sudo组,需要编辑/etc/sudoers文件将用户加入,而修改该配置文件需要用su到root身份下操作。
③【修改用户密码】——passwd passwd [参数] [用户名] • -d 删除指定用户的密码 • -l 锁定指定的用户 • -u 解除指定用户的锁定 • -wn 设定n为密码过期警告的天数