计算机硬件基本知识
CPU内部已经含有一些小的指令集,我们所使用的软件都要经过CPU内部的微指令集来达成。因此CPU可分为RISC(精简指令集)和CISC(复杂指令集)两种,前者有sun公司的SPARC,IBM的PowerPC系列及ARM系列等。后者有Intel、AMD等x86架构处理器,广泛用于个人计算机上。
CPU与其他设备集成到一块主板上协调工作,对于Intel处理器,主板设计成南北桥结构,南桥沟通CPU及周边运算速率较快的设备,北桥连接其他速率较慢的外围设备。
由于CPU和外部组件运行速率不同,所以我们称CPU内部运行速率为主频,与外部组件数据传输时的统一速度为外频,主频/外频=倍频,一般倍频由厂商设定好,如果玩家想提高CPU性能,可人为提高主板上外频,此即超频。
系统总线是主存与CPU数据传输的通道,分32/64位;I/O总线主要连接硬盘、USB、网卡等设备。注意区分总线宽度和CPU字组大小,通常所说的32/64位CPU指CPU字组大小,即CPU每次能处理的数据量。32位CPU最多支持4GB内存。(2^32=4G,32位最多寻址4G个地址,每个内存地址对应一个Byte数据)。
主存是动态随机存储内存(DRAM),通电时记录和使用,掉电后数据消失。适配主存的外频最好与CPU外频相同,如DDR2-800的内存条,其外频为400MHZ。
为提升数据传输速率,可采用双通道设计,2^n个内存并行传输,若每个64位,则总线宽度扩展为64×2^n位。为了提高数据传输速率,CPU内部嵌入了基于SRAM(静态随机存储内存)的L2 cache高速缓存,其频率与CPU主频相同。主板上都有一块固定的ROM(只读存储器),内部数据永久保存,一般用于记录BIOS信息。
显示适配器(VGA:Video Graphic Array)用于计算机数据可视化显示。每个像素的显示需要占用内存,因此显示适配器上会有一个内存容量。另外,显示3D图形的相关运算早期由CPU完成,如今为减轻CPU负担,显卡也承担此部分运算任务,即所谓GPU。
前面提到:CPU具有微指令集,它实际上是一系列二进制数(机器语言),告知CPU执行特定的操作。编程语言通过编译程序转化为机器语言,实现操控计算机硬件的目的。但为了避免考虑整体硬件系统来设计程序,人类使用操作系统核心(operation system kernel)来管理计算机硬件活动及驱动系统中所有硬件。操作系统核心本质上也是一组程序。
Linux版本
注意区分Linux核心版本和distribution版本。Linux核心版本编号格式为类似:2.6.18-92.el5。2是主版本,6是次版本,偶数是稳定版,奇数是测试版。
Linux的distribution众多,由套件管理的方式可分为RedHat系统的RPM方式及Debian系统的dpkg方式。Ubuntu使用dpkg方式。
Linux系统目录结构
ubuntu 下载的软件包一般放在/var/cache/apt/archives里,以.deb为后缀名,
欲安装该包,执行dpkg -i ×××.deb
dpkg -L libmysqlclient //查看libmysqlclient各个文件的安装位置
ubuntu shell绿色字体代表可执行文件,红色代表压缩文件(通常是安装包),蓝色代表目录
Linux常用命令大全
- sudo 后续命令 //以根权限操作,主要用于修改文件,sudo是ubuntu自己的脚本语言
- sudo su //切换为根用户
- cd /home //cd用于打开home目录
- cp /etc/group . //拷贝etc目录下group文件到当前目录
- rm group //删除当前目录下group文件
- ls -l //列出当前目录下所有文件的详细信息(-a:列出当前目录所有文件包括以 . 开头的项目;-i:列出当前目录下所有文件的索引号inode)
- 如该文件信息开头为drwxr-xr-x ,d表示是目录,后面9项表示owner、group、world三类用户的使用权限,r读、w修改、x执行、-无此权限。
- 注:Linux共四种用户,除以上三种还有root用户。
查询命令:
- find /usr/lib -name interfaces //查询该目录中所有名为interfaces的文件,此方法较慢
- locate interfaces //对/var/lib/locatedb检索(包含本机所有文件信息的数据库),找出所有名为interface的文件,较快
- whereis grep //搜索linux上二进制文件grep的位置,只能搜索可执行文件/二进制文件
- type grep //查看命令是否为系统命令
- file /bin/bash //查看bash的文件类型和格式,此处bash是elf类型的可执行文件格式,elf类型包括共享目标文件(.so),可执行文件(linux中一般不加后缀名),可重定位文件(.a,.o),核心转储文件等。
- ln passwd passwd.2 //对已存在的passwd建立硬连接passwd.2 passwd.2与passwd共享同一个索引号
- ln -s passwd passwd.2 //对已存在的passwd建立软连接,passwd.2 是passwd的符号连接:passwd -> passwd.2
- 注:连接是指文件名与索引号的对应
- mv passwd.2 godown.b //移动passwd.2为同一目录下并更名为godown.b,实际上是原地搬移,实现了更名,索引号不变。
- man ls //查阅手册,了解ls命令的用法
- ls --help // 获取ls的帮助文档
- mount /dev/cdrom /mnt/cdrom //将cdrom的文件挂到mnt/cdrom目录下,默认mnt为接受外挂文件系统的目录
- mkdir test //在当前目录下创建新目录test
- touch a.txt //在当前目录下创建新文件a.txt
- cat -n /etc/passwd //查看passwd文件并以行编号输出,passwd记录用户帐号信息,账号信息中UID若为0,则为root用户,享有最高权限。
- chown root /home/zhengfeng/Music
- chgrp root /home/zhengfeng/Music //更改文件的所有者及所有组
- chmod +x install.sh //更改install.sh的访问权限为允许所有人执行,+x增加执行权限。
- echo $PATH //显示当前搜索路径,若$PATH 加单引号,则显示该字符串,若$前加转义字符\则同样显示该字符串,若$PATH加双引号则显示当前搜索路径,即保留$的特殊用义。$用来标志系统环境变量。
- echo $BASH_VERSION //显示当前bash版本,bash是一种shell,作为命令语言解释器。
- ls -l /dev/hd* &<result.txt //将dev目录下hd开头的文件信息逐个列出保存到新建文件result.txt里,若文件不存在,则输出错误信息同样保存在rsult.txt里。这是一个输出重定向的例子。Linux默认标准输入0键盘,标准输出1屏幕,标准错误2也是屏幕,若需更改则使用> >> < <<符。
- ls -l /dev/hd* <result.txt 2<error.txt //更一般的用法
- cp /dev/stdin a.txt //将键盘输入内容保存在a.txt内,键入时按CTRL+D结束。
- cp a.txt /dev/stdout //将a.txt内容输出到屏幕,与cat等价。
- ls -l /dev|more //将dev目录下文件信息分页显示 |是管道操作符,表示前后命令并列执行。
- history //列出本次登录后所有操作历史,并编号;!12 将第12条历史命令重新执行一次;!! 将最近的命令重复执行一次。
- dir() { ls -ld $*;} //建立一个shell函数dir(),功能是花括号内命令,$*用于提取参数 因此dir /home 即显示hom目录信息,注意左花括号后有一空格,如多个命令则依次写在花括号内,以分号分隔。
- alias lm = ‘ls -al’ //令lm为别名
Linux在命令行输入时也有命令补全功能,例如在输入一个文件名到一半时,按下tab键,系统会自动补全名字,若存在相似文件名,则需要继续输入。
- ps //process situation 显示当前进程状态
- kill -9 1841 //向进程发值为9的信号,终止PID为1841的进程,信号是一种机制,进程通过信号了解系统中发生的事件。
- top //实时监视系统运行状况,按q退出监视返回shell。
- ping IP或网站名 //检查与目标主机或网站的连接是否连通,但不能作为评判标准
文件管理命令:
ls /:查看根目录下的内容
cd /dev/:进入到dev目录下,再用ls就可以查看该目录下的文件
以 . 开头的是隐藏文件,ls -a可以查看该目录下隐藏文件
ctrl+L 或者 clear :清屏
ctrl+C 终止程序
当cd到一个目录下时,操作该目录下的文件,前面不用加/,加/说明是绝对路径,要从根目录开始算
cat +文件名 | more
文件以
- -开头说明是个文件
- d开头说明是个目录
- l开头说明是链接文件
文件权限
- r读权限
- w写权限
- x执行权限
当用touch创建时,创建的是个文件。ls-l出来的是 - 开头的
当用mkdir创建时,创建的是个目录。ls -l出来的时这个目录下的文件 只有用ls -ld查看才能看到目录信息,以 d 开头
ls
- ls -a:显示全部文件
- ls -l:文件详细信息 ls-lh人性化显示
- ls -ld:显示目录信息而不是像上面的一样显示文件所包含子文件的信息,目录的详细信息
- ls -i:显示文件id号码 i节点
mkdir创建目录
-
例子:mkdir /tmp/first
-
注意,这里要在已有的文件目录下面创建新目录,不可以mkdir /tmp/frist/second,因为frist都不存在,怎么能在一个不存在的目录下面创建新目录呢
但是,可以使用-p选项来递归创建 mkdir -p /tmp/frist/second,这样就可以递归创建了。
cd命令 change directory,切换目录
- cd /tmp/first 进入first目录下面
- cd .. 返回上级目录
pwd命令 print working directory 显示当前目录
rmdir命令 remove directory 移除空目录,注意,只能是空目录,有东西的目录还是要用rm (-r -f)来实现
cp命令 copy 赋值文件
- cp -rp [原文件或目录]【目标目录】
- cp -r 用于复制目录(目录表示是个文件夹,里面含有别的文件)
- cp -p 保留文件属性(保留文件的信息,使得在ls -l详细查看文件时候,可以保留文件的更改时间)
mv命令 剪切或改名
- 剪切 :mv /tmp/one /root 把tmp下的one 剪切到 root目录下
- 剪切并改名:mv /tmp/one /root/one2 名字改成one2
- 只是改个名字: mv /tmp/one /tmp/two
- 注意,当当前目录就在tmp目录下时,可以直接mv one two ,把tmp下顶one改名为two
rm命令 remove删除
- rm -r /tmp/games 删除目录(文件夹)
- rm -f /tmp/games 强制删除(不会问你却不确定)
- rm -rf /tmp/frist 强制删除目录(且不会询问你却不确定呀)
touch命令 创建文件
- touch 文件名 ,注意在当前路径下创建不用加/,如果要在别的文件下创建,就要写绝对路径
cat命令 显示文件内容
- 语法:cat + 文件名
- cat -n 显示行号,把每一行都显示一个对应的行号
- cat /etc/issue cat -n /etc/services
tac命令,cat命令的死对手,把文件倒序显示 ,先显示最后几行
more命令,以分页的形式显示大文件内容
- 空格键或f 一页一页向下翻
- 回车键 一行一行向下翻
- q键(quit)退出浏览
less命令 more命令的加强版
- more里面的操作都相同
- 键盘上的PgUp键,可以向上翻页,上箭头,向上一行行翻
- /符号,查找类似于word里面的ctrl+F,搜索关键词。
- n键表示next,类似于查找中的“查找下一个”
head命令 显示文件前几行
- head -n 20 /etc/services 显示文件前20行,若不指定-n默认显示前十行
tail命令 显示文件末尾几行,很像上面的
-
tail -n 20 /etc/services
-
tail -f 动态显示文件内容,
就是说,我打开这个文件后,当有别的人改动这个文件的时候,我可以看到文件的变化。
主要用于监控服务器日志(他都被人干了啥)
touch cat cat -n tac more less head tail
ln命令(link) 生成链接文件
-
语法:ln -s [源文件] 【目标文件】 -s表示生成软链接
软链接文件,就相当于快捷方式。 文件类型为 lrwxrwxrwx,虽然对三种用户都有rwx权限,但也只代表用户对这个软链接的权限,真正的权限还是要看所链接文件的用户权限,
当软链接ls -l(list)时,会在文件名后面显示出这个软连接所指向的文件
issue.soft ->/etc/issue
- lrwxrwxrwx
- 有箭头 ->
-
硬链接:ln (没有-s) ,生成出来的文件和原文件一模一样(大小也一模一样),与拷贝cp不同的是,两个文件会同步更新。原文件就算丢失,硬链接文件也可以访问。软链接就不行了。判断文件是不是硬链接,用ls -i(查看文件id)i节点,会发现,原文件的id和硬链接文件的id是一样的(一个id可以有两个文件,当系统进行读写操作的时候,根据id来选择文件进行操作,两个文件的id一样,所以就同步更新了),超级厉害呀。怪不得同步更新。软链接的文件id就不与源文件相同。
- 实时同步的备份。
- 不可以跨分区(无效的跨分区链接)软可以
- 不可以针对目录使用,软可以
权限管理命令:
u 表示文件的所有者
g 表示一个组里的用户
o 表示其他人
r 读权限 ---4
w 写权限 ---2
x 执行权限 ---1
对于file文件来说
r:cat/more/head/tail/less
w:vim
x:script command(脚本,命令)
对于directory目录来说
r:ls
w:touch/mkdir/rmdir/rm (创建文件,创建目录,移除空目录,删除文件)
x:cd 进入目录
当目录有w权限时,便可以删除掉这个目录,即使目录下面的文件没有操作权限,也可以用rm一并连目录一起删掉,删除一个文件,需要对文件所在的目录有w权限。文件具有全部权限,但是文件所在的目录没有权限,那也不能对这个文件进行操作,目录权限才是老大。
useradd添加的用户信息在/home下面
chmod命令 change the permissions mode of a file 改变文件的权限模式
只有两个人才有权限改变文件权限,一个是u所有者,一个是管理员root
-
chmod {ugoa}{+-=}{rwx}[文件或目录]
chmod u=rwx jan 把jan 这个文件的所有者u的权限改变成为rwx
-
使用数字来代表twx chmod [mode=xxx] 文件路径
chmod 640 jan 表示把jan这个文件权限改变为-rw-r—-
-
chmod -R 递归修改权限,改变目录下所有文件的权限
chown命令 change file ownership 改变文件或目录的所有者
只有 root 才有chown 权限,别的用户都没有
- useradd 用户名 添加用户
- chown 用户A 文件名 把文件的所有者变成用户A
chgrp命令 change group改编文件或目录的所有组,操作方法和chown一样
- groundadd添加所有组
umask命令 the user filr-creation mask
- umask -S 以rwx的形式显示新建文件的缺省权限,缺省创建的文件时不能有x可执行权限的,任何新建的文件都会把x可执行权限去掉
- 直接umask表示的是新建文件权限的掩码,比方说出来0022,那么实际的缺省权限是777-022(后三位)=755–>rwxrw-rw-
- 当需要改变新建文件的缺省权限时,比方说我要所有新建的文件都是rwxr–r–权限。首先计算出这个权限的数字表示–>744,再用777-744=033 ,在umask 033就可以了,这时候新建的文件缺省权限就是rwxr–r– ,但是注意,新建的文件还是没有x执行权限,新建的文件夹目录就可以有x权限,你怎么设置,目录mkdir上就是什么
文件搜索命令:
find命令 find. 表示在当前目录下
-
语法 find 查找范围 查找条件
-
find / -name init 在/根目录下按照-name名字搜索 名字叫 init的文件,精准搜索,不是模糊搜索。想要模糊搜索,就把名字改为
*init*
表示模糊搜索 -
init*,表示已init开头的文件 。 init???表示已init 开头的文件且后面还有三个字母,严格区分大小写
-
find / -iname init 不区分大小写
-
find / -size 按照文件大小查找
- find / -size +n表示大于n -n表示小于n =n表示等于n n在linux里面表示数据块
- 1数据块=512字节=0.5kb 所以查找大于100MB
- find / -size +204800
-
-user,按照用户名查找
- find /home -user 用户名A ,找到/home下所有用户名为A的文件
-
按照文件属性查找
- -amin assess 按照访问时间 find /etc -amin -5 表示在五分钟内(-)被访问过的文件
- -cmin change 按照文件属性 find /etc -cmin -30 表示30分钟内文件属性被改变的文件,文件属性就是在 ls -l查看文件时看到的
- -mmin modify 按照文件内容 find /etc -mmin -60 表示查找60分钟内被改变的文件
-
-type 按照文件类型查找
- f 文件 d目录 l软链接 find /etc -type f查找/etc下面文件(不是目录)
-
条件链接
- -a all 两个条件都吻合 详单与&&
- -o other 只要有一个条件满足就好了 相当于||
- find /etc -name init* -a -type f 表示在etc下查找以init开头的文件,且要求文件类型为-f(file不是目录,是文件)
-
对查找到的文件执行相应操作
- find /etc -name init -exec ls -l {} \;
固定格式 -exec或者-ok 后面加命令 再后面加 {} \; -ok会一直询问你要不要执行相应的操作
find /etc -name init* -a -type f -exec ls -l {} \;
-
-inum查找文件的i节点,多用于操作一些不好写名字的文件,在ls -l 时可以看到文件的i节点
- find /etc -inum 31531 -exec rm {} \; 删掉i节点为31531的文件
- 查找文件的硬链接
find -name =iname * ? -size + - -user -group -amin -cmin -mmin -type f d l -imun -a -o -exec/-ok{} \;
locate命令 快速查找文件
- 所有的文件会被放到一个文件库中,不用全盘查找,可以达到秒搜效果。但是这个文件库不是立刻更新的而是定时更新,所以当touch /tmp/asd 创建一个asd文件后,马上用 locate asd 就找不到文件,还没有更新到文件库里面,要调用updatadb命令更新一下才能查找到
- locate命令适用于查找系统文件,但是要查找放在/tmp下面的临时文件,是找不到的,不在文件库收录范围,
- locate -i 不区分大小写搜索
which 命令 搜索命令所在目录及命令别名
-
which rm 对rm命令执行which 操作
alias(别名) rm="re -i" /bin/rm
就出现了rm的别名”re -i” ,和他的目录/bin/rm。
注意在linux里是不会确认操作的,当我们用rm 命令时,其实是用”rm -i” 操作,不是原生的命令,在这里面添加了确认操作。当我们直接用 /bin/rm ,命令的话,就算不加-f,他也不会询问,直接删掉了。linux命令就是这么冷酷。所以一般用的rm其实就是rm -i
whereis命令 类似于which 返回命令的帮助文档
以#开始的行,表示注释,没啥用
grep (检索目标命令行)命令:在文件中搜索字符串匹配的行并输出
-
语言:grep -iv 指定字符串 文件
grep Network /root/anaconda.cfg 在/root/anaconda.cfg文件下查找Network所在的行
-
-i 不区分大小写 -v排除指定字串
grep -v ^# /etc/inittab 把以#开头的行不看。
- ^# 以#开头的文件
find
locate -i updatadb
which whereis
grep -i -v
帮助命令
帮助命令中 1 表示命令的帮助
5 表示文件的帮助(配置文件的帮助文档)
man命令:manual 获得帮助信息
- man ls 进入ls这个命令的帮助页面,这个页面符合less命令规则,可以用/来查找
- man service 查看配置文件services的帮助信息,注意,后买那就只要加配置文件的名称就可以了,不用加绝对路径,否则,就是直接把配置文件打印出来了。
- 在linux中,有可能命令和文件是同一个名字,比方passwd,当这时候 man passwd会优先展现出来命令的帮助信息,但要是想展现出文件的帮助信息 就 man 5 passwd (5表示文件,1表示命令
whatis +命令:显示命令的简短的信息
apropos +配置文件 :显示配置文件简短信息(只要写文件名就好,不用写绝对路径)
help命令,查看shell内置命令的帮助信息
- 很多命令是shell内置命令,比方说cd umask,这类命令无法通过man +命令名称 来查看命令帮助的,只能通过help +命令名称 来查看帮助文档
man 命令或而配置文件 命令 NAME 作用 /选项
配置文件 NAME 存放信息 文件格式
whatis 命令
apropos 配置文件相关信息
命令 --help
info 类似于 man
shell内置命令,就是用whereis which 找不到的命令 用help +命令名
用户管理命令
useradd 添加新用户
- useradd zhengjiang
passwd 为用户添加密码 ,使他可以访问服务器
- passwd + 用户名 回车后就会叫你输入密码了
- 管理员root可以更改任何人的密码,而且密码也可以不符合系统密码要求,但是用户就只能通过passwd +新密码来更改自己的密码,且必须符合密码规定。
who 查看登陆用户信息
- who 会显示
- 登陆用户名
- 登陆用户终端 (tty本地终端;pts远程终端 后面的数字表示不同的终端号)
- 登录时间
- 登陆ip,没写表示本机登陆
- w 命令,更加详细的用户信息
- 信息第一行 分别表示
- 系统时间
- 服务器linux系统运行时间 (uptime命令也可以查看相同信息)
- 服务器负载量
- 其他显示条目
- IDLE 表示用户空闲时间,最后一次操作到现在的时间间隔
- pcpu 用户操作占用CPU时间 jcpu累计时间 what 用户操作(-bash表示啥都没做)
压缩文件命令
压缩格式
rm -rf * 表示删除当点目录下的全部文件不用询问
. gz格式,只能压缩文件,不能压缩目录
- gzip +文件名 压缩文件,不保留源文件
- gunzip +文件名 解压缩,文件名可以是直接的文件名(不加后缀)也可以加后缀,但是当文件里面重名的文件时 比方说 a.gz 和a 那么就要gunzip+加后缀的文件名,否则报错,最好还是全写
tar命令,可以用来压缩目录
-
-c 打包 -v 显示详细信息(打包了目录下的哪些文件呀) -f 指定文件名 -z 打包同时压缩 -x 解包
-
压缩后的文件格式 .tar.gz
-
先把目录打包成一个.tar文件,在对这个打包文件进行gzip压缩,最后出来的是.tar.gz文件,网上一些资源的格式很多都是.tar.gz格式。
-
tar -cvf jan.rar jan 把jan目录打包成jan.rar文件
再用gzip jan,rar 把刚刚打包好的.rar文件给压缩一下
-
tar -zcf jan.rar.gz jan 直接把jan目录压缩打包为jan.rar.gz,一步完成,会保留源文件
-
tar -zxf jan.rar.gz 解压,也会保留源文件
zip命令:
- zip +压缩后的文件名.zip +要压缩的文件
- 会保留原文件
- zip -r 压缩目录
- unzip 解压缩 后面直接加要解压缩的.zip文件,不分文件还是目录都可以解压缩
bzip2压缩
- 特点
- -k 可以保留源文件
- 压缩比惊人的大,效率高。
- 产生.bz2文件后缀
- 只能压缩文件,不能压缩目录
- 于tar命令配合使用压缩目录时,只要把-z 换成-j便可。
- bzip2 -k jan 把jan文件压缩为.bz2文件格式。
- tar -jcf jan.rar.bz2 jan 把jan目录压缩为.rar.bz2文件
- bunzip2 解压缩,-k保留源文件
- .rar.bz2文件解压 tar -xjf 文件名.rar.bz2
- 因为bzip2不可以压缩目录,所以也要用到tar命令,先打包再压缩。在tar文件里 ta
.gz gzip gunzip (gzip -d) 不保留源文件
.rar tar -cf tar -xf
.rar.gz tar -zcf tar -zxf
.zip zip -r(保留) unzip
.bz2 bzip2 bunzip2 (-k 保留,压缩率大)
.rar.bz2 tar -jcf tar -jxf
网络命令:
write命令 给在线用户发送消息 可以用w查看在线用户
- write + 用户名 回车后 编辑发送内容
- CTRL + D 保存结束
- CTRL+ 删除键 才能实现删除打错的字
wall命令: write all 给所有在线用户发送消息,自己也会收到
- broadcast全局广播
ping 命令:
- -c ping -c 3 ip 指定ping几次,发送几次请求包
ifconfig命令,查看和设置网卡
mail命令:查看发送电子邮件,用户不在线也可以发,不像write
系统会给root用户发送一些重要邮件,当root用户登陆时,要仔细查看系统邮件。
- mail + 用户名 回车编辑 CTRL+D发送
- mail 后面没参数,查看自己收到的mail,
>N
开头表示new 新邮件,&后面输入邮件的数字就可以查看邮件内容了- h 表示回到邮件列表
- q 退出
last命令:列出目前于过去登陆系统的用户信息。包括系统reboot重启时间
lastlog命令:用户最后一次登陆的时间 -u +用户id
traceroute命令:显示数据包到我要访问主机间的路径,网络节点
传输协议:
- TCP 三次握手,双方均在线后再传输数据
- UCP 不握手,直接把数据丢过去 速度快
netstat命令:查询网络状态(status) 详细
- netstat -tlun 查看本机监听的端口
- netstat -an 查看本机所有的网络链接
- netstat -rn 查看本机路由表,查询网关
- netstat -tunlp | pr
setup:管理工具
nmtui:网络管理工具
service network restart:重启网络服务
mount:挂载命令
把挂载目录和设备文件名/dev/sr0,连接起来
- 先在/mnt目录下创建挂载目录 mkdir /mnt/cdrom
- mount -t 文件系统(iso9660) 设备文件名 (/dev/sr0) /mnt/cdtom
- cd /mnt/cdrom 进入到光盘的文件目录下,查看文件
- umount 卸载 ,后面加挂载目录(/mnt/cdrom)或设备文件名(/dev/sr0)都可以
关机重启命令:
shutdown命令:
shutdown [选项] 时间
会自动断开服务,在关机和重启之前
服务器最好不要关机,只能重启
-c :取消前一个关机命令
-h :关机
-r :重启
重启:reboot init 6
关机:halt pweroff init 0
系统运行级别:
runlevel命令:查看运行级别
- 第一个数字是前一个运行级别 第二个是当前的级别
在/etc/systemd下面了
- 0 关机
- 1 单用户,root登陆
- 2 不完全多用户,不含NFS服务(network file system 实现两个linux系统的文件共享)
- 3 完全 多用户
- 4 未分配
- 5 图形界面 X大写的X表示图形环境
- 6 重启
logout:退出登录
- 维护人员,登陆后一定要logout,小心使得万年船
vim编辑器:
三种模式:
- insert插入模式 对文件内容的改变 按下Esc退到命令模式
- 编辑模式 对vim编辑效果的设置,比方说加上行号
- 命令模式 前面两种模式的中转站
- 按下 a/i/o进入Insert模式
- 按下 :进入编辑模式
简单流程:
- vi + filename 进入命令模式,在命令模式下输入 a/i/o 进入插入模式
- 在insert模式下(下面会出现Insert符号),输入信息
- 编辑完成后 按Esc键,从insert模式下退到命令模式
- 输入 :从命令模进入到编辑模式
- 输入wq,保存并退出
- cat 查看文件,发现编辑成功
rpm文件安装包命令:
别用yum 卸载
cpio提取文件命令:
-
当我的某个命令文件比方所ls,他所在的目录/bin/ls,被我不小心删掉了,那么要么重装linux系统,全部命令覆盖重装,要么就用到了文件提取。只要知道这个ls命令在那个rpm包里面,就可以单独把这个文件提取出来。
-
流程
- rpm -qf /bin/ls 查询ls命令是哪个rpm包
- 提取相应rpm包中的ls命令到当前目录的/bin/ls下
- cp /root/bin/ls /bin/ 把ls命令复制到/bin/目录,修复文件丢失。
-
格式:rpm2(这里的2通假字,同to)cpio +rpm包的绝对路径(/mnt/cd/Packages/包名) |(管道符) cpio -id
+.提取的文件名(前面的 . 表示存到当前目录下 )
- rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./user/bin/ls
命令
rpm -ql -qf
yum在线管理: 解决包的依赖性
- 网络配置 vi /etc/sysconfig/network-scripts/ifcfg-xxx
- service network restart
- ONBOOT:yes
- ip 子网掩码 网关 DNS 缺一不可
- /etc/yum.repos.d
yum常用命令:
- yum list 查询所有可用软件
- yum search +关键字 搜索相关包(包名,不是包全名)
-
yum -y install +包名
- -y 自动回答yes
- install 安装
- yum -y install gcc
-
yum -y update + 包名 :更新
- 注意要是不加包名,默认升级所有,包括linux内核,但是内核升级完先需要一定都配置。所以新手一定要记得加上包名。
- yum -y remove + 包名 卸载
- 用yum卸载会把包所依赖的全都卸载掉,但是这些包会被别的包依赖。所以用yum 卸载很危险,可能会导致系统崩溃。
- yum grouplist:组查询
- yum groupinstall +包名 要是包名有空格,要用引号包起来。
- yum groupremove:移除。
yum光盘yum源搭建:
-
挂载光盘mount /dev/sr0 .mnt/cdrom
-
让其他网络yum源失效:进入yum原配置文件 /etc/yum.repos.d/,把除了CentOS-Media.repo文件外,其他文件全都改个名字(把后缀名全都改掉,只要不是.repo后缀,系统就无法识别),让系统无法识别,无路可去自然就去关盘中找资源啦。
-
让光盘yum源生效:
进入光盘.repo我那件,vim打开,把baseurl(表示yum资源的地址,其他网络yum源的baseurl的值为http://官方yum源服务器地址)改为file://(三条杠)+光盘文件挂载点(/mnt/cd/),把另外两个地址给注释掉(#号注释)
-
千万注意:一些配置文件有着严格的格式要求,当你改动后,发现报错了。就要知道可能是我的修改导致文件的格式出现错误。
源码包,安装在人为指定的路径下(没有规规矩矩的放在指定的地方),所以要启动源码包下的服务的时候,需要文件的操作命令的绝对路径,xxx/xxx/xxx.start ,才可以启动。
RPM包就很乖了,他的安装路径基本上都是固定的,系统知道这个文件会被放在哪里,所以有一个快捷服务关岭命令service scrvice +相应服务+相应命令(start等)
远程登录与NFS
Telnet是Internet提供的一项基本服务,用来将本地计算机作为远程计算机的终端机使用。
telnet 主机名或IP地址
exit或logout命令退出
telnet以明文传输不安全,因此禁止root身份登录 SSH 主机名或IP地址
//作为telnet的替代,以公开密钥算法加密数据,允许root登录
scp 本地文件路径 远程用户名@主机:文件路径
//用于本地与远程计算机之间安全拷贝文件 如: scp z3@202.207.30.136:a.txt
sftp 远程用户名@主机
//以安全模式进入ftp状态,此时可执行该状态下的命令: get 远程路径 本地路径
//下载 put 本地路径 远程路径
//上传 quit
退出
? //列出该状态可使用的命令清单,其中不少同Linux Bash命令如mkdir、cd、ls等,都是针对被登录机操作,若对本地机操作,则在命令前加字母l,如lmkdir、lls等
NFS(Network File System):通过网络将远程主机的文件系统挂载到本地主机目录下,以便于使用,它基于客户机/服务器模式,建立在TCP/IP协议的表示层协议与会话层协议机制之上。
vim程序编辑器
vim是vi文本编辑器的进阶版,在所有linux系统上均可使用,被称为“编辑器之神”。
vi分为三种模式:一般模式,编辑模式和指令列命令模式
vi hello.c //进入hello.c文件,此时为一般模式,若hello.c不存在则自动新建
一般模式下执行vi定义的键盘上转义字符操作,del为删除光标上字符,dd为删除一整列,退格键及上下左右键移动光标,i进入插入光标前编辑模式,a进入插入光标后编辑模式,r进入改写编辑模式;
编辑模式下键盘上所有按键除ESC外都可输入字符,如上下左右键分别代表ABCD大写字母,按ESC退出编辑;
在一般模式下按:进入指令列模式,最下面一行为指令列,wq保存并退出。
gcc编程
gcc中库的链接顺序是从右往左进行,所以要把最基础实现的库放在最后,这样左边的lib就可以调用右边的lib中的代码。同时,当一个函数的实现代码在多个lib都存在时,最左边的lib代码最后link,所以也将最终保存下来。
objdump -T libmysqlclient.so
//打开当前目录下的动态链接库libmysqlclient.so查看其中的API。objdump命令用来查看各种目标文件(elf文件)内部的结构 obidump -h hello.o
//参数-h把hello.o各个段的基本信息打印出来,elf文件是分段的,通常分为Header、.data(数据段包括局部静态变量和全局变量)、.text(代码段)、.rodata、.bss、.comment等
readelf -s hello.o //查看详尽段信息
gcc错误:undefined reference to function 该函数具体实现没有找到 info gcc
//显示gcc的所有信息
mysql操作
SQL:Structured Query Language netstat -tap|grep mysql
//检查系统有没有已安装mysql,若socket显示listen则表示就绪。
mysql中unique key(唯一键)指除主键外确保某一列唯一性的约束,该列可包含NULL(空值);primary key为主键 apt-get install mysql-server
//安装mysql mysql -u root -p
//以root用户登录mysql server,之后需输入密码 show databases; show tables;
//查看数据库和数据表单,注意在mysql server中输入指令以;结尾。 use mysql;
//使用数据库mysql也可以在登录时输入指令: mysql -D mysql -u root -p
quit;
//退出 insert into students(id,name,sex) value(1,zhengfeng,man);
//向students表中插入zhengfeng的信息 select * from students
//输出students的所有信息,*是通配符,可指定为列名称
create table students(
id int(8) not null auto_increment,
name varchar(255) not null,
sex char(4) not null,
tel char(13) not null default “-”,
primary key(id),
unique key unique_name(name)
);
describe students
//输出表结构信息 mysql_config --libs
//使用mysql_config工具确定MySql程序的链接参数,同理,若需确定编译参数,使用mysql_config –include
redis操作
注:redis是一个高性能的key-value数据库,由ANSI C编写,支持网络,它支持的value类型包括string、list(字符串链表)、set(字符串集合)、zset(字符串有序集合)、hash(字符串哈希类型)。
竞态条件和原子操作的概念:原子操作指该命令在执行过程中不会被其他插入命令打断,是“一气呵成”的;
竞态条件:指一个系统或进程的输出,依赖于不受控制事件出现的顺序或时机,若多个客户端连接到redis,同时执行多项命令时有可能出现竞态条件,关于此问题的深入讨论在《链接、装载和库》中详细提及。
apt-get install redis-server
//安装redis netstat -nlt grep|6379
//查看系统中redis运行状态,listen为就绪 redis-cli
//进入redis命令行客户端,cli:command line interface 此为进入交互模式,可自由输入命令。 select 1
//选择1号数据库,redis实例默认自带16个数据库,以数字编号,可通过配置文件更改。