实验名称: 实验一 熟悉LINUX环境和命令
实验目的: 1. 了解UNIX/LINUX的命令及使用格式。
2.熟悉UNIX/LINUX的常用基本命令。
3. 练习并掌握LINUX提供的vi编辑器来编译C程序
4. 学会利用gcc、gdb编译、调试C程序
实验内容:
- 熟悉UNIX/LINUX的常用基本命令如ls、who、w、pwd、ps、pstree等
2. 用vi编写一个简单的C程序,用gcc编译并观察编译后的结果
3. 利用gdb调试该程序
4. 运行生成的可执行文件。
实验结果记录:
- Ls
who
- w
- pwd
- ps
- pstree
一、LINUX的登录与退出
1、登录
步骤如下:
login: (输入 student)
password: (输入密码:student)
2、退出
在 LINUX 系统提示符$下,输入 logout、exit 或 shutdown 。
例:$ logout
二、LINUX 命令格式
命令 [选项] [处理对象]
例:ls -la mydir
注意:
(1)命令一般是小写字串。注意大小写有别
(2)选项通常以减号(-)再加上一个或数个字符表示,用来选择一个命令的不同操作
(3)同一行可有数个命令,命令间应以分号隔开
(4)命令后加上&可使该命令后台(background)执行
三、常用命令
1、目录操作
和 DOS 相似,LINUX 采用树型目录管理结构,由根目录(/)开始一层层
将子目录建下去,各子目录以 / 隔开。用户 login 后,工作目录的位置称为
home directory,由系统管理员设定。‘~’符号代表自己的 home directory,
例如 ~/myfile 是指自己 home 目录下 myfile 这个文件。
LINUX 的通配符有三种:’*’ 和 ’?’ 用法与 DOS 相同,
‘-‘ 代表区间内的
任一字符,如 test[0-5]即代表 test0,test1,……,test5 的集合。
(1)显示目录文件 ls
执行格式: ls [-atFlgR] [name] (name 可为文件或目录名称)
例: ls 显示出当前目录下的文件
ls -a 显示出包含隐藏文件的所有文件
ls -t 按照文件最后修改时间显示文件
ls -F 显示出当前目录下的文件及其类型
ls -l 显示目录下所有文件的许可权、拥有者、文件大小、
修改时间及名称
ls -lg 同上
ls -R 显示出该目录及其子目录下的文件
注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输
入ls --help查看,其它命令的更多用法请输入 命令名 --help 查看.
(2)建新目录 mkdir
执行格式: mkdir directory-name
例: (新建一名为 dir1 的目录)
(3)删除目录 rmdir
执行格式: rmdir directory-name 或 rm directory-name
例:rmdir dir1 删除目录 dir1,但它必须是空目录,否则无法删除
rm -r dir1 删除目录 dir1 及其下所有文件及子目录
rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用
时要小心
(4) 改变工作目录位置 cd
执行格式: cd [name]
例: cd 改变目录位置至用户 login 时的 working directory
cd dir1 改变目录位置,至dir1目录
cd ~user 改变目录位置,至用户的working directory
cd .. 改变目录位置,至当前目录的上层目录
cd ../user 改变目录位置,至上一级目录下的user目录
cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full
path)
cd - 回到进入当前目录前的上一个目录
(5)显示当前所在目录 pwd
执行格式: pwd
(6)查看目录大小 du
执行格式: du [-s] directory
例: du dir1 显示目录 dir1 及其子目录容量(以 kb 为单位)
du -s dir1 显示目录 dir1 的总容量
(7)显示环境变量
echo $HOME 显示家目录
echo $PATH 显示可执行文件搜索路径
env 显示所有环境变量(可能很多,最好用"env | more","env grep PATH"等)
(8)修改环境变量,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道 export 的具体用法,可以用 shell 的 help 命令:help export
2、文件操作
(1)查看文件(可以是二进制的)内容 cat
执行格式:cat filename 或 more filename 或 cat filename|more
例: cat file1 以连续显示方式,查看文件 file1 的内容
more file1
或 cat file1|more 以分页方式查看文件的内容
(2)删除文件 rm
执行格式: rm filename
例: rm file?
rm f*
(3)复制文件 cp
执行格式: cp [-r] source destination
例: cp file1 file2 将 file1 复制成 file2
cp file1 dir1 将 file1 复制到目录 dir1
cp /tmp/file1 将 file1 复制到当前目录
cp /tmp/file1 file2 将 file1 复制到当前目录名为 file2
cp –r dir1 dir2 (recursive copy)复制整个目录。
(4)移动或更改文件、目录名称 mv
执行格式: mv source destination
例: mv file1 file2 将文件 file1,更名为 file2
mv file1 dir1 将文件 file1,移到目录 dir1 下
mv dir1 dir2
3、系统询问与权限口令
(1)查看系统中的使用者
执行格式: who
(2)查看 username
执行格式: who am I 查看自己的 username
(3)改变自己的 username 的帐号与口令 su
执行格式: su username
例: su username 输入帐号
password 输入密码
(4)文件属性的设置 chmod
改变文件或目录的读、写、执行的允许权
执行格式: chmod [-R] mode name
其中:[-R]为递归处理,将指定目录下所有文件及子目录一并处理
mode为3-8位数字,是文件/目录读、写、执行允许权的缩写(r:read,数
字代号为"4" w:write,数字代号为"2" x:execute,数字代号为"1")
mode: rwx rwx rwx
user group other
缩写: (u) (g) (o)
例:chmod 755 dir1 将目录dir1设定成任何人皆有读取及执行的权利,但
只有拥有者可作写修改。其中7=4+2+1,5=4+1
chmod 700 file1 将 file1 设为拥有者可以读、写和执行
chmod o+x file2 将 file2,增加拥有者可执行的权利
chmod g+x file3 将 file3,增加组使用者可执行的权利
chmod o-r file4 将 file4,除去其它使用者可读取的权利
(5)改变文件或目录所有权 chown
执行格式: chown [-R] username name
例: chown user file1 将文件 file1 改为 user 所有
chown .fox file1 将文件file1改为fox组所有
chown user.fox file1 将文件file1改为fox组的user所有
chown -R user dir1 将目录 dir1 及其下所有文件和子目
录,改为 user 所有
(6)检查用户所在组名称 groups
执行格式: groups
touch name
4、进程操作
(1)查看系统目前的进程 ps
执行格式: ps [-aux]
例: ps 或 ps -x 查看系统中属于自己的 process
ps -au 查看系统中所有使用者的 process
ps -aux 查看系统中包含系统内部及所有使用者的 process
ps -aux|grep apache 找出系统中运行的所有名称中带有
"apache"串的process
(2)查看正在 background 中执行的 process
执行格式: jobs
(3)结束或终止进程 kill
执行格式: kill [-9] PID (PID 为利用 ps 命令所查出的
process ID)
例: kill 456 《操作系统》实验指导书
或 kill -9 456 终止 process ID 为 456 的 process
(4)显示系统中程序的执行状态
例: top -q 不断地更新、显示系统程序的执行状态
第一行显示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。
第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。
第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。
第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。
PID 每个进程的ID。
PPID 每个进程的父进程ID。
UID 每个进程所有者的UID 。
USER 每个进程所有者的用户名。
PRI 每个进程的优先级别。
NI 该进程的优先级值。
SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。
TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。
DSIZE 数据和堆栈的大小。
TRS 文本驻留大小。
D 被标记为“不干净”的页项目。
LIB 使用的库页的大小。对于ELF进程没有作用。
RSS 该进程占用的物理内存的总数量,单位是KB。
SHARE 该进程使用共享内存的数量。
STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代
表僵死状态;T代表停止或跟踪状态。
TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个
进程子进程所占用的时间。且标题会变成CTIME。
%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。
%MEM 该进程占用的物理内存占总内存的百分比。
COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整
的命令行
按"ctrl+c"停止查看
5、I/O 命令
(1)管道(pipe-line)的使用
执行格式: command1|command2
功能:将 command1 的执行结果送到 command2 作为输入
例: ls -R1|more 以分页方式列出当前目录文件及子目录名称
cat file1|more 以分页方式,列出 file1 的内容
(2)标准输入控制
执行格式: command-line<file 将 file 作为 command-line 的输入
例: mail -s “mail test” user@iis.sinica.edu.tw<file1
功能:将文件 file1 当作信件的内容,subject 名称为 mail test 送给收
信人
(3)标准输出控制
执行格式一: command>filename
功能:将 command 的执行结果送至指定的 filename 中
例: ls -l >list 将执行”ls -l” 的结果写入文件 list 中
执行格式二: command>!filename
功能:同上,若 filename 文件已存在,则强迫重写
执行格式三: command>&filename
功能:将 command 执行所产生的任何信息写入 filename
执行格式四:command>>filename
功能:将 command 的执行结果,附加(append)到 filename
6、其它常用命令
(1)命令在线帮助 man
执行格式: man command
例: man ls 查询 ls 这个指令的用法
(2)设定命令记录表长度 history
执行格式一: set history=n
例:
功能:设定命令记录表长度为 40(可记载执行过的前面 40 个命令)
执行格式二: history 查看命令记录表的内容
(3)显示说明 info
执行格式: info command-name
例: info gcc
功能: 查看gcc的说明,按上下箭头选定菜单,回车进入,"u"键返回上
级菜单.
info不加参数则进入最上一级菜单.
四、用cat 命令查看 /proc 动态文件系统目录下的文件,辨识其中的系统信息.
例如: cat interrupts 列出当前中断占用情况
cat ioports 列出设备的硬件IO占用情况
cat pci 列出pci设备的情况
2、
3、
4、
实验小结:
思考题:
- 什么是Shell环境变量和Shell元字符?
Shell环境变量是在Shell会话中定义的全局变量,用于控制Shell和其他程序的行为。它们包含一些系统设置和用户定义的值,例如PATH用于指定可执行程序的搜索路径。
Shell元字符是在Shell中具有特殊含义的字符,例如通配符(*,?),管道符号(|),重定向符号(>,<)等。它们用于执行各种操作,如文件操作和进程管道。
- 在Linux中如何挂载一个U盘?
要在Linux中挂载一个U盘,可以按照以下步骤进行:
a. 插入U盘到计算机上。
b. 打开终端,使用dmesg | tail命令来查看U盘设备的识别信息,通常以类似于 /dev/sdX 的形式显示,其中X是字母,表示不同的设备。
c. 创建一个用于挂载的目标文件夹,例如:sudo mkdir /media/usbdrive
d. 使用sudo mount /dev/sdX /media/usbdrive来挂载U盘到指定目标文件夹。
e. 现在,U盘的内容将出现在/media/usbdrive目录下。
f. 当完成后,可以使用sudo umount /media/usbdrive来卸载U盘。
3、Linux系统中文件权限分为哪三种,用户类型为哪三种?
Linux系统中的文件权限分为三种:
用户权限(User):这是文件或目录的所有者的权限。
组权限(Group):这是文件或目录所属组的成员的权限。
其他权限(Other):这是其他用户的权限,即不是文件所有者也不是文件所属组成员的用户的权限。
用户类型分为三种:
用户(User):文件或目录的所有者,拥有最高权限。
组(Group):文件或目录所属的组。
其他(Other):不属于文件所有者或文件所属组的其他用户。