查找资料, 了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp
查找资料, 了解以下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password
查找资料, 学习如何使用命令安装gcc/g++, gdb, vim
一、重要目录
1、/proc
/proc :系统内核提供的文件系统,用来放置内核中的信息(系统核心、行程信息、周边装置的状态以及网络状态等)。/proc目录存在于内存中,当用户读取proc文件时,此文件从动态内存中读取出信息并提交。
/proc 下啊有三个重要目录:net, scsi 和 sys.
2、/sys
/sys可以说是/proc的复制选项,为解决/proc目录下文件读写格式不一样而不方便转化的问题。 /sys只有一个值可写或可读,帮/proc记录一些文件操作,当下次调用时,会尽量使用/sys中的值进行操作,而将/proc保留给纯净的“进程文件系统”。
3、/SElinux
/SElinux类似一个保护系统,将用户访问文件的资源进行限制,当用户有非法操作时,进行限制保护。
4、/bin
/bin 是个二进制执行文件目录
5、/usr/lib
/usr/lib 存放一些程序运行时所必须的函数库
/lib是内核级的、/usr/lib 是系统级的, /usr/local/lib 是用户级的。
6、/usr/local
/usr/local 提供给普通用户的/usr目录。/usr/local 适合安装软件,存放软件升级包。主要存放那些手动安装的软件(不是通过“新立得”或apt-get安装的软件。
7、/var
相比/usr 是系统安装时会占用较大磁盘空间的文件,/var 是当系统运行以后会占用内存较大空间的文件。一些经常被修改的文件,还有一些数据库如MySQL存在/var/lib, 用户未读的邮件的默认存放地点为/var/spool/mail。
8、/tem
一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,所有重要数据不可放置在此目录下。
二、重要命令
1、du命令:
格式: du [选项] 文件
功能:显示指定文件及以下所有文件所占用系统数据块的情况(不制定文件就是默认当前目录)
-a : 显示所有文件对系统数据块的使用情况。
-b : 显示数据块大小时以字节为基本单位。
-c : 除了显示文件对系统数据块的使用情况,还显示出文件的总和
-s : 只显示文件数据块的总大小,不现实文件名
-x : 只显示当前目录,不统计子目录。
linux下程序测试:
[test@localhost ~]$ du c_code
48 c_code/holleword
16 c_code/processbar
32 c_code/Fork
16 c_code/Loop
112 c_code
[test@localhost ~]$ du -a c_code
4 c_code/holleword/main.c
4 c_code/holleword/makefile
12 c_code/holleword/a.out
12 c_code/holleword/main
4 c_code/holleword/fork.c
12 c_code/holleword/fork
48 c_code/holleword
4 c_code/processbar/process_bar.c
12 c_code/processbar/bar
16 c_code/processbar
4 c_code/Fork/fork.c
12 c_code/Fork/fork
4 c_code/Fork/fork_exit.c
12 c_code/Fork/fork_exit
32 c_code/Fork
4 c_code/Loop/loop.c
12 c_code/Loop/loop
16 c_code/Loop
112 c_code
[test@localhost ~]$ du -s c_code
112 c_code
2、df命令:
格式:df [选项] 文件
功能:计算当前文件所有数据块的使用情况(包括前不久删除的文件)(与 du 的区别)
-a :递归显示个文件及其子目录的数据利用块
-h : 方便阅读时显示
-H : 和-h一样,只不过 1k = 1000;而不是1024
-i : 显示inode信息
-k :区块为1024
-T :文件系统类型
linux下程序测试:
[test@localhost ~]$ df c_code
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/cl-root 38770180 6546816 32223364 17% /
[test@localhost ~]$ df -a c_code
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/cl-root 38770180 6546816 32223364 17% /
[test@localhost ~]$ df -h c_code
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 37G 6.3G 31G 17% /
3、top命令:
格式:top [ 选项]
功能:相当于windows下的资源管理器,可以查看当前CPU的使用情况,各进程的状况。
-b : 批处理
-I : 忽略过失
-c : 显示完整的治命令
-s : 保密模式
linux下程序测试:
[test@localhost ~]$ top
4、free命令:
格式:free [选项]
功能: 显示所有内存利用率(实体内存、虚拟的交换文件内存、共享内存区段、系统使用的缓冲区)
-b: 以bype 为单位显示
-k: 以kb为单位显示
-m: 以MB为单位显示
-o: 不现实缓冲区
-t: 显示内存总和列
linux下程序测试:
[test@localhost ~]$ free
total used free shared buff/cache available
Mem: 1867292 254824 1339956 9152 272512 1413900
Swap: 2097148 0 2097148
[test@localhost ~]$ free -b
total used free shared buff/cache available
Mem: 1912107008 260898816 1372135424 9371648 279072768 1447874560
Swap: 2147479552 0 2147479552
[test@localhost ~]$ free -m
total used free shared buff/cache available
Mem: 1823 248 1308 8 266 1381
Swap: 2047 0 2047
[test@localhost ~]$ free -t
total used free shared buff/cache available
Mem: 1867292 254396 1340364 9152 272532 1414328
Swap: 2097148 0 2097148
Total: 3964440 254396 3437512
5、pstake命令:
格式:pstake [选项]
功能:用于进程跟踪,必须由相应进程的所属者或root用户运行。查看进程挂起的位置。
6、su命令:
格式: su [选项] 用户名
功能:用于用户之间的切换
选项使用:-a<指令>或 -command=<命令> :执行完指定的命令后,即回复原来的身份。
-l :改变身份同时改变工作目录
-m,-p(-environment -preserve) : 改变身份,不变更环境变量。
-s(-shell) :指定要执行的shell
-help : 显示帮助
-version:下手版本信息
linux下程序测试:
[test@localhost ~]$ su -c ls root
密码:
c_code class_test Desktop workspace
[test@localhost ~]$ su -V test
su,来自 util-linux 2.23.2
7、sudo命令:
格式:sudo [选项] 参数
功能:可以使用其他用户的身份执行命令。
参数:需要执行的命令。
-b :在后台执行指令
-h :显示帮助
-H :将home环境变量设置为新身份的HOME环境变量
-k :结束密码的有效期限,下次执行sudo时便需要密码。
-l :列出目前用户可执行与无法执行的命令
-p :改变询问密码的提示符号
-s :执行指定的shell
-u :以指定的用户作为新的身份。 不加此参数,则预设以root作为新的身份
-v :延长密码有效期限5分钟
-V :显示版本信息
8、adduser命令:
格式:add user [选项] 用户名
功能:用来建立用户账号和创建用户的起始目录,使用权限时超级用户。
选项: -c :加上备注文字,并保存在password的备注栏中。
-d :指定用户登入时的主目录,替换系统默认值/home/<用户名>
-D :变更预设值
-e :指定账号的失效时间,日期格式为MM/DD/YY。例如06/30/12。不写表示永远有效
-f :制定在密码过期后多少天,关闭该账号。如果为0账号立即被停用,为-1表示账号永久可用。默认值为-1
-g :指定用户所属的群组。用户组必须时已经存在的,默认值为100,即user
-G :指定用户所属的附加组群。
-m :自动建立用户的登入目录。
-M :不要自动建立用户的登入目录。
-n :取消建立以用户名称为名的群众。
-r :建立系统账号
-s :指定用户登入后所使用的shell。默认值为/bin/bash
-u :指定用户ID号。该值在系统中必须是唯一的。0~499默认是给系统用户账号使用,所以该值必须大于499。
8、password命令:
格式:password [选项]
功能:修改用户密码。
-d :删除密码
-f :强行执行
-k :更新只能发送在过期后。
三、如何使用命令安装gcc/g++,gdb,vim
linux下使用gcc来编译C语言程序,使用g++来编译C++程序,使用gdb来调试程序,使用vim作为编辑器。
1、安装
yum 在线安装软件
yum :redhat 系列包管理工具
查看软件包: yum list 查看所有软件包
yum intall list 查看已安装软件包。
安装软件包: yum intall [软件包名]
移除软件包: yum remove
[test@localhost ~]$ yum list
已加载插件:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
* base: mirror.jdcloud.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.nwsuaf.edu.cn
* updates: mirrors.nwsuaf.edu.cn
^Z
[1]+ 已停止 yum list
2、gcc/g++
编译器: 把我们所写的c语言代码编译生成计算机可识别的机器指令代码。
编译过程:预处理、编译、汇编、链接
gcc 默认链接方式是动态链接
Gcc常用选项:
-E 预处理
-S 编译
-c 汇编
-o 指定生成文件名称
-static 静态链接
-g 开启程序调试模式,加入调试符号信息生成debug版本程序。
[test@localhost Loop]$ vi loop.c
[test@localhost Loop]$ gcc loop.c -o loop
[test@localhost Loop]$ ./loop
haha
haha
haha
3、调试器gdb
gdb: 调试程序,快速定位程序运行错误位置的工具。
前提:是可执行程序中需要有调试符号信息(gcc加上-g选项,生成debug版本)。
与gcc的区别:gcc默认编译生成的可执行程序是release版本程序然而程序想要能够调试必须是debug版本。
gdb ./execfile 加载运行程序。
调试命令:
单步调试:start 开始单步调试、l 默认查看调试行附近代码, l file:line 指定文件指定行、until 直接解运行到指定行(until file:line 指定文件指定行)、 s 下一步,追踪进入函数。
打断点:b 打断点,b + 行号 给某行打断点(b file:line)、 i 查看调试信息(i b 查看断点信息)、d 默认删除所有断点(d b_id 删除指定断点)、p 查看变量内容(p var)、c 从停止处继续运行、watch 变量监控(watch var)。
快速定位函数崩溃位置: bt 查看函数调用栈信息。
4、vim编辑器
打开文件: vim 文件名
操作模式:12种,常用三种(插入、普通、底行)。
模式切换:普通<->插入: i 普通 -> 插入(o、I 光标移动到行首、A 光标移动到行尾、O 向光标所在上行进行插入、)
ESC 底行-> 普通
普通 -> 底行:ESC 插入 -> 普通。
底行模式:保存退出:w q q! wq 执行命令:!command vim设置
普通模式:光标移动 hjkl wb Ctrl+f/b gg G
复制:yy nyy 粘贴:p P
剪贴:x dw D dd ndd
撤销:u Ctrl+r
[test@localhost Loop]$ vi loop.c
1 #include <stdio.h>
2 #include <unistd.h>
3
4 int main()
5 {
6 while(1){
7 printf("haha\n");
8 int i;
9 i++;
10
11 sleep(1);
12 }
13 return 0;
14 }
~
~
~
~
~
~
~
"loop.c" 14L, 129C