用户层
Kernel :管理文件,设备,内存,进程
生成的a.out存在磁盘中
运行需要拎进内存里,操作系统管理物理内存,管理CPU,管理网络;管理进程,给用户提供友好操作(shell命令)
硬件
uname -a 查看操作系统版本
setup 配置网络
vim /etc/ 查看配置信息
service network stop 断开网络连接
service network start 激活网络
service network restart 重启网络连接
文件相关小命令
ls 查看当前文件下内容
man 帮助你学习命令是干啥的,后面空格加命令 ,[ ]里的东西是可选的
j k 相当于鼠标滚动,上下翻
pwd 打印工作路径
who am i 详细查看自己是谁
whoami
touch 创建文件夹、更改文件创建时间
ls -l 08_01.c 查看文件夹创建时间
rm 删除文件
-f 不用提示的删除
rm 删除空目录
-rf 彻底删除
“#”注释
ctrl+l 清屏
cp 拷贝
date ‘+%Y-%m-%d’ 查看日期,具体的可以用man date查看,例如date ‘+%F %T’,hui会显示
2017-08-04 01:54:57
touch date'+%Y%m%d'.log
创建日志
cal 查看日历,例:cal 2017
fall 查看文件后缀名 linux下的可执行程序是ELF,
ldd 查看程序中用了什么动态库,例:ldd a.out
objdump -ds a.out 把这个a.out二进制文件转化成对应的汇编语言
nm hello.o 查看符号表
strip 清除符号表
od -c hello.c 查看源文件的所有信息
od hello.c 查看源文件的内存
shutdown 关机
shutdown -h now 向用户推送消息将要关机
调用 init 0
halt -p 相当于直接关闭电源
shutdown -r now 向用户推送消息将要重启
init 6 调用rboot 重启系统
vim /etc/inittab 开机的文件配置
id:5:initdefault:
“/etc/inittab” 26L, 884C
0 关机
1 单用户模式
2 多用户,没网络
3 全用户
4 没有使用
5 开机图形界面
6 重启
在黑乎乎的终端上敲个 start
useradd bajie 创建一个交bajie的账户,按exi退出
vim /etc/passwd 500行以后是用户目录
vim /etc/shadow
在root下 passwd bajie 是设置bajie用户的密码
su - bajie 切换到bajie用户
在普通账户下 passwd 改密码
在root下像普通用户切换不需要密码,在普通用户下像普通用户切换需要密码
ls -l
- 普通文件
d
c 字符文件
b 块文件
r w - r - - r - - (本用户 本组 其他用户)
r 可读
w 可写
x 可执行
/dev/sda1
chmod 更改权限 chmod u(当前用户) g(本组用户) o(其他用户) a(所有)
chmod u+x hello.c 在hello.c 中加上可执行权限
-x 取消可执行权限
chmod 755 hello.c
软件安装
yum
解压软件
tar -xzvf
ln -s 文件名 快捷方式名 创建快捷方式
ls -i 查看文件的编号(计算机存储文件的id)
查找
which startx 查看文件startx在哪
whereis+命令
找文件
find . -name “*.c” 查找
find . -name “*.p” -exec ls -l {} \;
-ok
-type
find . -type f -name “*.c”
find . -ctime -2 按时间查找,查找两天内的
创建文件
vim lage.c
touch ccc.txt
./a.out
ls -l ccc.txt
再找大文件
find . -size +100M
再删除它
find . -size +100M -exec rm {} \;
grep “int” date 查找文件中的int
find . name “*.c” | xargs grep “int” 查找文件名为.c 的文件,并进入文件中查找”int”
时间戳 timestamp
date +%s
1511174875
date -d 1511174875
find /usr/include/ -name “*.h” | xargs grep “struct iphdr {”
xargs 意思是把前面的每一个文件作为一个文件去里面找
mkdir
查询命令(/+命令)或者(help+命令)
注:内部命令man不起作用
cd
. 当前目录下
.. 上一级
查看文件内容
cat 一次性看
more 空格向下翻页、b向上翻
echo 自动换行并输出你echo后面的东西
-n 不换行
vim
1.命令模式
进入编辑模式
1.i 插入模式
2.按esc 退出插入模式
3.按ZZ 保存并退出
命令模式
j k 相当于鼠标滚动,上下翻
lh 右左
{} 跳到上一个空白行,跳到下一个空白行
$0 行尾,行首
bw 跳到上一个单词,跳到上一个单词
H 当前屏幕的顶部
L 当前屏幕的最后一行
M 当前屏幕的中间行
% 跳对应的括号
xn 删除n个字母
u 撤销
ndw 删除n个单词
ndd 删除光标所在行以及以下n-1行
D 删除光标所在位置到当前的行尾
d0 删除光标所在位置到当前行的行首
d} 删除光标所在位置到下一个}
d{ 删除光标所在位置到上一个}
G 删除光标所在位置到文件结尾
r 替换当前字符
R 进入替换模式
/ 后面跟你要找的东西,按N上一个,按n找下一个
缩进 start,end/^/tab键/
前进 start,end/^tab键//
nyy 复制
p 粘贴
2.编辑模式
esc退回命令模式,按两次Z保存并退出
3.末行模式:
:w 保存
:q 退出
:wq 保存并退出,或者(:x)
:$ 文件结尾
:n 文件第n行
:set nu 显示行号
:set ts=4
:vs 多屏 按ctrl键和ww 切换
:r math.c 将math.c的内容贴到当前后面
:42,50s/int/INT 从42行到50行,将int替换为INT,每行只替换第一个
/g 每行所有都替换
:1,$s/old/new 全文替换
:48,49s/;/\r{\r}/ 从48行到49行将;替换为自动换行的{}
首先在root用户下创建一个目录feil,观察显示权限755
用chmod命令将创建的feil目录的权限修改成000
此时将root账户换成普通用户,会发现没有进入feil目录的权限
再切回root账户,将权限改为004,增加读权限即”— — r–”,再切回普通账户会发现依然无法进入feil目录
再切回root账户,将权限改为002,增加写权限即”— — -w-“,再切回普通账户会发现依然无法进入feil目录
再切回root账户,将权限改为006,增加读写权限即”— — rw-“,再切回普通账户会发现依然无法进入feil目录
再切回root账户,将权限改为001,增加可执行权限即”— — –x”,再切回普通账户会发现可以进入feil目录
然而对于root账户而言,目录无论被改成什么权限都可以进入。
因此稍作总结
Linux的权限RWX三种
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
1、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。
2、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
4、目录的w位不设置,即使你拥有目录种某文件的w权限也不能写该文件
1.首先来介绍下根目录下的一些重要目录含义
1. /bin 常用的二进制命令目录。比如scp mkdir 等;和/usr/bin类似。
2. /boot linux内核及引导系统程序所需的文件目录。安装系统分区的时候一般要分一个boot分区。常见分区为:/boot 200M swap内存的1.5倍,其余的都给/。
3. /dev 设备文件目录,比如声卡,磁盘,光驱等。
4. /etc 二进制安装包的配置文件默认路径和服务启动命令存放的目录。
5. /home 普通用户的家目录默认数据存放目录。
6. /lib 库文件存放目录。
7. /lost+found 在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题,可能会有文件被移到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。
8. /mnt 一般是用于临时挂载存储设备的挂载目录,比如有cdrom,U盘等目录,直接插入光驱无法使用,要先挂载后使用。
9. /opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过./configure –prefix=/opt/目录,非必须这样,视习惯或规范而定。
10. /proc 操作系统运行时,进程信息及内核信息(比如CPU,硬盘分区,内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见/etc/fstab。
11. /root linux超级权限用户root的家目录。
12. /sbin 大多涉及系统管理的命令的存放,是超级权限用户root可执行命令存放地,这个目录和/usr/sbin,/usr/X11R6/sbin或/usr/local/sbin目录是相似的。
13. /tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的,权限比较特殊。
14. /usr 这个是系统存放程序的目录,比如命令,帮助文件等。这个目录下有很多的文件和目录。当我们安装一个linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc/目录中。/usr目录下包括涉及字体目录/usr/share/fonts,帮助目录/usr/share/man或者/usr/share/doc,普通用户可执行文件目录/usr/bin/或/usr/local/bin或/usr/X11R6/bin ,比如/usr/sbin,/usr/X11R6/sbin,/usr/local/sbin等,还有程序的头文件存放目录/usr/include。
15. /var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log这是用来存放系统日志的目录,系统日志路径/var/log/messages。/var/www目录是定义apache服务器站点存放目录;/var/lib用来存放一些库文件,比如mysql的,已经mysql数据库的存放地。
/etc目录下一些重要的目录及文件说明
1./etc/sysconfig/network-scripts/ifcfg-eth0 配置网络地址及GW等。
2./etc/resolv.conf 设置本机的客户端DNS。
3./etc/hosts 设定用户IP与名字(或域名)的对应表,相当于本地LAN内DNS。
注:WIN的hosts文件地址:C:\windows\system32\drivers\etc\hosts
4./etc/sysconfig/network 可修改机器名及网卡启动等配置。
5./etc/fstab 记录开机要mount的文件系统。
6./etc/inittab 设定系统启动时 init进程将系统设置成什么样的runlevel及加载相关的启动文件设置。
7./etc/exports 设定NFS系统用的配置文件路径。
8./etc/init.d 这个子目录是用来存放系统或服务器以system V 模式启动的脚本,这在以system V模式启动或初始化的系统中常见。比如CentOS/RedHat。
9./etc/xinit.d 如果服务器时通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如slackware,有些老版本也没有。在redhat/fedora中比较新的版本中存在。
10./etc/profile 系统全局变量配置路径。
11./etc/issue 记录用户登录前显示的信息。
12./etc/motd 每次用户登录时,/etc/motd文件的内容会显示在用户的终端。
13./etc/group 设定用户的组名与相关信息。
14./etc/passwd 账号信息。
15./etc/shadow 密码信息。
16./etc/sudoers sudo 命令的配置文件。
17./etc/securetty 设定哪些终端可以让root登录。
18./etc/login.defs 所有用户登录时的缺省配置。
19./etc/modprobe.conf 内核模块额外参数设定。
20./etc/rsyslog.conf(5系列为syslog.conf) 日志设置文件。
21./etc/DIR_COLORS 设定颜色。
22./etc/host.conf 文件说明用户的系统如何查询节点名,默认order hosts,bind
23./etc/hosts.allow 设置允许使用inetd的机器使用。
24./etc/hosts.deny 设置不允许使用inetd的机器使用。
25./etc/protocols 系统支持的协议文件。
26./etc/X11 X Window 的配置文件。
/var目录下一些重要的目录及文件说明
1./var 日志文件
2./var/log 各种系统日志存放地
3./var/log/messages 系统信息默认日志文件,非常重要,按周自动轮询
4./var/log/secure 记录登入系统存放信息的文件,按周自动轮询,例如pop3,ssh,telnet,ftp等都会记录在此。
5./var/log/wtmp 记录登陆者信息的文件,last
6./var/spool/cron 定时任务crontab默认目录,按用户名命名的文件。
7./var/spool/mail 系统用户邮件存放目录
8./var/spool/clientmqueue 临时邮件文件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等,工作中偶尔会因为该目录文件太多,导致/var/所在的分区inode数量被消耗尽,无法写入文件的情况。
9./var/lib/rpm rpm套件安装处
1./usr/bin 这个目录是可执行程序的目录,当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。相似的目录是/usr/local/sbin
2./usr/sbin 这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令;相似目录是/usr/local/sbin或/usr/X11R6/sbin等。
3./usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录,一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。相当于C:\Program files。
4./usr/local/bin 用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号链接。
5./usr/local/sbin 系统全局环境目录,可放置一些不需要加路径执行的脚本等。
6./usr/share 系统共用的东西存放地,比如/usr/share/doc和/usr/share/man帮助文件。
7./usr/src 内核源码存放目录,比如下面有内核源码目录,比如linux,linux-2.XXX.XX目录等。
8./usr/bin 使用者可执行的binary file 的目录。
9./usr/lib &&/usr/local/lib 系统会使用到的函数库。
1./proc 虚拟目录,是内存的映射
2./proc/version 内核版本
3./proc/sys/kerne 系统内核功能
4./proc/cpuinfo 关于处理器的信息,如类型,厂家,型号,性能等。
5./proc/meminfo 系统内存信息
6./proc/devices 当前运行内核所配置的所有设备清单。
7./proc/dma 当前正在使用的DMA通道
8./proc/filesystems 当前运行内核所配置的文件系统
9./proc/initerrupts 正在使用的中断,和曾经有多少个中断。
10./proc/ioports 当前正在使用的I/O端口。
11./proc/loadavg 系统负载信息,uptime的结果。
以下简略说明:
du –> estimate file space usage(判断文件使用空间)
df –> report file system disk space usage(检查linux服务器的文件系统的磁盘空间占用情况)
top –> display Linux tasks (显示系统运行的进程信息)
free –> Display amount of free and used memory in the system(显示系统空闲和使用的内存情况)
pstack –> print a stack trace of a running process(查看正在运行的进程堆栈)
su –> run a shell with substitute user and group IDs(切换不同账户)
sudo –> execute a command as another user(是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具)
adduser –> create a new user or update default new user information(创建新账户)
passwd –> update user’s authentication tokens(创建用户的密码)