Day2 Linux基础
Linux里的一个概念,一切皆文件
这一节我们承接上一次,在配置好了VMware+Linux+XShell,并且成功连接之后。在XShell上操作(注意:IP地址并不是分配给一个机器的而是分配给一个连接的设备的,如果断网之后再次连接,那么随机分配的IP地址可能不一样,有可能需要重新获取Linux的IP地址再连接XShell)
Linux常用命令,:
#ifconfig 这个命令很像Windows的ipconfig,可以查阅自身的IP地址和网络配置(subnet mask等)
#pwd 知道自己当前所在的路径 /表示根目录。对比与Windows的图形用户界面,根目录就是计算机(我的电脑),里面可以接触到C:D:E:等硬盘
#cd / 表示进入根目录 (是change directory的缩写,用法 cd+空格+路径)
#cd .. 表示向前退回一级目录,退回多级目录: #cd ../../../../退回四级目录
#ls 查看当前路径下的所有文件或目录
输入命令的时候比如 cd+空格+文件名时,文件名写一点可以用tab自动补全
如何查看一个目录下哪些是文件哪些是目录呢,这些文件或目录的大小类型等信息如何查看呢(Windows中我们可以在文件夹中右击选择查看-详细信息就可以得到)
#ls -l
文件的类型可以从第一列中判读出来(第一列的第一个字符是d的表文件夹,其他表示文件),第二列,第三列表示用户名,第四列表示文件大小(单位Byte),第5,6,7列为文件的最后修改日期,
#ls -lh 可以看出来文件大小并带有单位(KB)[h for human意指人性化展式数据 ]
#ls -a 可查看当前文件夹下的隐藏文件
#ls -lha 结合前边的命令,这就是把隐藏的文件的信息人性化展式出来
#ls -lh dir_name 查看一个文件夹下的信息,不一定要进入这个文件夹,直接把文件夹名写后边
#vim .test 创建一个名为test的隐藏文件
一个文件夹有4KB,而其中有两个隐藏文件夹如.和..也各占4K,这表示这个总文件夹自己本身就占4K,一个空文件夹就要占4K
#vim aaa 创建一个名为aaa的可见文件(Linux 默认创建了以后会自动跳入这个文件,但还没有开启编辑模式,点击i后进入insert模式,才可以向文件中写内容)
编辑结束后,需要保存时,先按esc键退出insert模式,然后按shift+:冒号键,看到显示一个冒号后,输入wq后回车。wq表示write and quit保存且退出
查看文件:
-
查看或者编辑,就可以再次输入#vim aaa, 对于已有的文件,Linux会打开并不会创建产生冲突。#vim aaa +25 可以打开后直接跳转到该文件的第25行
-
仅查看, 内容不分页(文章很长的话,不遍于阅读),可以输入#cat aaa
-
仅查看,内容分页,方便阅读(按回车:再下一行,按空格:再下一页),#more aaa
但是如果我查看到了想要的,不想看剩下的内容可以按q退出
#mkdir dir_name 创建一个名为dir_name的文件夹,创建目录,make directory
#mv aaa dir_name 将aaa文件移入到dir_name这个路径之下,这个路径是个文件夹(剪切并粘贴的效果)。如果dir_name这个位置也是个文件,就会将第二个文件覆盖掉
可以创建一个文件夹,进入它,再创建子文件夹,以此类推创建一个路径。但是如果想创建一个路径,并且已经想好了一个路径的结构,那么可以一次创建完成
#mkdir -p China/gansu/lanzhou/anning 这样一次性地创建了这个路径中所有的文件夹(-p表示递归方式地创建)
#tree China 显示China目录的树结构,很清晰直观地显示China这个文件夹下的路径树结构
#tree 或者#tree . 表示查询当前目录树结构
#tree .. 表示查询上一级目录树结构
如果显示tree不存在可能需要安装#yum -y install tree
Linux基础2:
#clear 清屏,将屏幕上的代码和结果清除
#q 退出
#df 查看当前磁盘的使用情况 #df -h 人性化展式信息,有单位
这里的dev/sda3和dev/sda1和Windows的盘符差不多;这里的Mounted on表示这个分区挂载在哪个位置
在Windows中我们可以通过ctrl+alt+del来调出task manager,来查看内存和CPU的使用情况。
#top 查看当前占用内存或CPU使用最高的进程
虽然现实内存memory的使用率很高,但是不一定有那么忙。cached表示的缓存,暂时未使用但是预留的空间。buffers表示将要使用的空间
CPU:
us表示user,用户进程所占的CPU
sy表示system,操作系统本身所占的CPU
id表示idle,表示CPU空闲率
iowait,表示CPU等待io的时间比
Mem:
total 全部的 1000MB
Used 内存使用 800MB
Free内存空闲200MB
Cached缓存,预留的使用空间500MB
buffered缓冲区,正要使用的空间40MB
Total free=free+cached+buffered=740MB相当于真正空闲的空间
Total usage=1000-740MB=260MB
#kill 进程号(PID) 关闭进程,这个PID可以从#top中看到
#find / -name aaa 在根目录下查找文件名为aaa的文件
如果不知道文件的具体名字,只知道一部分,可以模糊查询
#find / -name *aaa* 在根目录下查找文件名包含aaa的文件
#find / -size +1000M 在根目录下查找文件大小 大于1000MB的文件
#find / -size +1000M | xargs ls -lh 除了找到指定条件的文件还要额外地显示文件地大小
竖线符号|表示将前边命令执行的结果当做后边的输入,xargs也是这个作用
线上查询及帮助命令
#man ls 这个man命令可以查阅我们不知道的命令的解释,比如查阅ls命令
#命令 --help 这个命令可以帮助我们查阅命令的简单的解释
#help 命令(比如cd) 查看一些Linux命令行的内置命令
(查阅帮助时,可以先用man命令查看,如果不行就用help命令查看)
文件和目录操作命令
#ls /etc/ 命令ls后可以接一个路径,显示指定路径下的信息,不接路径就是显示当前路径下的信息
#cp aaa /etc/ 将文件aaa复制并移动到etc路径里面
#find / -name “yum.log” 从根目录开始找文件名为yum.log的文件,/表示从根目录开始找,.表示从当前目录开始找#find / -name “*.log”
#tree 命令如果无法使用,可能需要安装,输入#yum -y install tree然后就可以使用tree命令了
#tree . 查看当前文件夹或目录下的树结构,#tree /etc/ 查看etc目录下的树结构
#rm 文件 谨慎使用这个命令,这个命令就是销毁文件,Windows删除文件会进入回收站而这里rm 文件会永久删除。比较安全的做法是把文件移入到tmp文件夹中,#mv 文件 /tmp/ 这样需要的时候还可以找回文件。另外一个方式可以代替rm命令的是,#> 文件 可以将文件的内容都清空
#touch 命令可以创建一个空文件
查看文件及内容处理命令
#grep 命令行 文件名 可以查看这个命令行是不是这个文件的内容
#grep 命令行 -n 文件名 还可以查到这个命令行是该文件中的第几行 #egrep是grep的扩展
文件压缩/解压缩/下载命令
#tar zcvf demo.tar.gz 文件1 文件2 文件3... 打包一个或几个文件成为demo,zcvf命令不可少,.tar.gz是个习惯地写法
#sz demo.tar.gz 可以下载文件或者压缩的tar文件,#sz 文件名 。如果命令不存在,需要安装,yum -y lrzsz
信息显示命令
#df -h 显示磁盘的使用率,总大小等信息
#du -sh 查看当前目录的大小
Linux中所有隐藏文件以.开头
#free -m 查看当前服务器的内存,服务器的内存是第二行的最后一个数值(它是free,buffer和mem的和)
#top 查看当前服务器内哪个程序消耗的CPU或者内存最大
#ip a 查看当前服务器的ip地址
系统安全相关的命令
#useradd 用户名 这个命令可以用来添加用户
#chown 用户.属组 文件名 可以修改一个文件的用户和属组(用户组)
前边的oldboy表示用户,后边的oldboy表示属组
#chown root.root 文件名,这样就把用户和属组就改回来了
注意用ls -lh看到的文件类型,除了第一位d表示文件夹以外,别的字母是什么意思呢?
[r]表示read 4
[w]表示write 2
[x]executable可执行文件 1
[-]表示没有权限 0
对于drwxr-xr-x 第一段:drwxr表示用户的权限,第二段:xr表示属组(用户组)的权限,第三段:x表示其他用户的权限
[drwxr -xr -x]
用户 用户组 其他
7 3 1
权限777表示 rwx-rwx-rwx 当然这个权限是极为不安全的
#chmod 755 文件名 设置某个文件的权限,用户可以写看执行,用户组和其他都只可以看和执行不可以写
所以放置到服务器上的文件一定要有合适的权限
#su - 用户名 切换用户
Linux需要掌握的150个命令
线上查询及帮助命令(2个)
#man xxx #helpxxx/ #xxx --help 如常用所述
文件和目录的操作命令(19个)
#ls #cd #cp #find #mkdir #mv #pwd #rm #tree 如常用所述
#rmdir dirname 从一个目录中删除一个叫dirname的目录(一个目录被删除前必须为空,且必须具有对父目录写的权利)
#rmdir -p dirname 当子目录被删除,父目录为空时也一并被删除
#rename 可以用来给文件批量重命名,#mv可以用来给单个文件重命名
#rename [被替换部分] [替换部分] [替换模式?/*]
如果我有几个文件夹名字为foo0, foo7, foo18, foo100
#rename foo foohaha foo? 把名字具有foo后边只跟一个字符的文件里的foo部分换成了foohaha, 结果是foohaha0, hoohaha7, foo18, foo100
#rename foo fooaaa foo?? 把名字内具有foo后边跟两个字符文件的名字里的foo换成fooaaa,结果是:foo0, foo7, fooaaa18, foo100
#rename foo fooX foo* 把名字内具有foo后边不论有多少字符的文件的名字里的foo换成fooX,结果是fooX0, fooX7, fooX18, fooX100
#touch fileA 如果fileA已经存在,可以修改这个文件或目录的时间戳(存取时间,修改时间); 如果fileA不存在,那么就创建一个空白文件fileA
#touch [参数] file, 修改了文件之后可以用#stat file来查看文件的access,modify,change time
Access time是文件的存取访问时间。modify time是文件的内容改变时间。change time是文件的属性改变时间也叫状态改变时间,如文档的索引节点发生了变化(位置,用户属性,组属性等),使用chmod,chown命令修改一次文件属性,change time就会更新
参数列表:
-a 或--time=atime或--time=access或--time=use 只更改存取时间access time
#touch -a file 会将file的access time改为当前时间
-c 或--no-create 不建立任何文档。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间 modify time
#touch -m file 会将file的modify time改为当前时间
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
#touch -r ref_file file 将file的时间改为和ref_file时间相同
-t 使用指定的日期时间,而非现在的时间。[[CC]YY]MMDDhhmm [.SS]将access和modify统一调整
#touch -t 201401120958.36 file将access和modify改为2014年1月12日9:58:27
-d 使用指定的日期时间,而非现在的时间。[DD-Month-YYYY]统一调整access和modify
#touch -d ‘12-January-2014’ file 将access和modify时间改为2014年1月12日
-d是一个非常智能化的命令,这里可以用 -d GMT3 来修改时区,甚至可以识别’next Sunday GMT3’ ‘1 year ago 13:03:27’
#basename [path] [suffix] 去掉文件的路径名或者后缀,只显示文件名本身
#basename /etc/aaa.txt 结果为aaa.txt
#basename /etc/aaa.txt .txt 传递了第二个参数.txt,结果为aaa
#dirname [path] 去掉路径最后的文件名部分,只显示路径部分
#dirname /etc/terminfo/aaa.txt 结果/etc/terminfo
#chattr [-RVF] [-v version] [mode] file 修改file文件的属性,mode部分由一下参数组成
#lsattr [-RVadv] file 列出文件file的属性
#file aaa 查看aaa文件的类型
#md5sum [option] file 计算并检测md5 digest
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5对任意长度的信息计算,产生一个128位的二进制数,作为fingerprint
查看文件及内容命令(19个)
#cat #more #vi/#vim 同常用所述
#tac file 也是显示文件的内容,和cat方式相反是把文件最后一行内容最先显示
#less file 显示文件的内容,相比于more更加灵活,可以向前翻页
#head -n 5 file 显示file文件的前5行
#head -c 20 file 显示file文件的前20个字节
#tail -n 5 file 显示file文件的后5行
#tail -c 20 file 显示file文件的后20个字节
#cut -b 3-5 file 显示file这个文件每一行的第3-5个字节
#cut -c 3 file 显示file这个文件每一行的第3个字符
#split [-c字节/-b字节/-l行/-行] file将文件每几个字节或行就切割一次
#paste [-d 分隔符/-s] file1 file2 file3.. 将文件合并在一起(-d表示用分隔符来分割,不写分隔符默认用tab键来分割。-s表示每个文件合并的时候各占一行而不是平行输出)
#sort aaa 将文件中每行按照首字母的ASCII码进行排序,升序输出
#sort -r aaa降序输出
#sort -n aaa将数字作为数字类型排序而不是字符类型(就不会出现10比2小的情况了)
#uniq aaa 去除文件中的重复行
#uniq -c aaa显示文件中的每行出现了几次
#uniq -u aaa仅显示不重复行 #uniq -d aaa仅显示重复行
#wc [-c字节数/-l行数/-w字数/-m字符数] aaa 统计文件中的
#iconv [-f原始编码/-t输出编码] file 转换指定文件的编码
#iconv -f utf-8 -t gb2312 aaa.txt>bbb.txt 读取aaa的数据将编码转换为gb2312,输出到bbb.txt
#dos2unix file1 file2 … 将Windows格式的文件转换为Unix或Linux格式,其实Windows下\r\n表示回车换行,而Linux中\n表示回车换行
#diff [参数] file1 file2 比较file1和file2或者目录间的不同之处
#vimdiff file1 file2 将会分屏显示file1在左和file2在右方便比较
#rev file 将file每行内容从右往左显示,#tac将所有行逆序显示,#cat所有行正常显示
#join file1 file2 将file文件中相同字段的内容合并起来
指令tr 是用来作替换的
#cat file|tr ‘A-Z’ ‘a-z’ 输出file的内容,并将所有大写字母替换为小写字母
#cat file|tr -d ‘A’ 有匹配A的内容删除
#cat file|tr -d -c ‘c\n’ 不是c和换行符的都删除
文件压缩及解压缩命令(4个)
#unzip file 解压缩文件
#zip file 压缩文件 #zip -p ./* 将当前文件夹下的文件和文件夹都压缩
信息显示命令(12个)
#uname 显示操作系统, #uname -a显示主机名称,内核,CPU,硬件平台
#hostname 显示hostname
#dmesg 显示内核缓冲区内容
#uptime 显示当前时间,以运行时间,在线用户,平均负载
#du -h /etc/ 人性化地显示目录或文件所占空间大小,-h可以显示出单位
#date 查看当前时间
#cal 显示日历 #cal 2016显示2016日历 #cal 9 2016 显示2016年9月份的日历
文件搜索命令(4个)
#which file 查看可执行文件的地址
#whereis file 查看文件的地址, 不如find精确,更新比较慢(每周)有时会找到已删除的文件
#locate file 查看速度快,但是不精确,找不到最近创建的文件
用户管理命令(10个)
#useradd user 添加user用户
#usermod 修改用户账户
#usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
#userdel user 删除user用户
#groupadd groupname 新增一个工作组
#passwd 普通用户只能修改自己的密码,而root用户可以修改任何一个用户密码#passwd user
#chage修改账号密码的有效期限
#chage[-l][-m mindays][-M maxdays][-I inactive][-E expiredate][-W warndays][-d lastdays]username
#id 查看当前登录的uid和gid的所属分组及用户名
#su root 如果当前在user用户下,那么会切换到root用户但是操作环境还是在user用户下,
#su-root 把用户名和操作环境都切换到root这里
#visudo
#sudo 是superuser do的简写,让普通用户执行一些root用户的功能。配置sudo必须通过编辑/etc/sudoers文件,还必须使用visudo编辑
系统性能监视高级命令
进程管理命令16个:
计算机简介
简介:计算机发展介绍,计算机硬件组成,计算机基本原理
二进制:每一位是1的话就表示下列的数,总数相加
1024 512 256 128 64 32 16 8 4 2 1
1024是后边所有位的数相加再减一
二进制数表示相应的负数,表示按位取反再加1
计算机硬件组成:输入单元,输出单元,算数逻辑单元,控制单元及记忆单元,其中算术逻辑单元和控制单元合称中央处理单元(Center Processing Unit, CPU)
主板:CPU,RAM,PCI插槽(作为接口,可以连接声卡显卡等外接设备),SATA接口(连接硬盘),IDE接口(现已淘汰),北桥(交换CPU处理的数据)和南桥(I\O操作,与硬盘交互)
鸟哥私房菜:Linux的基础书推荐
1Byte字节 = 8bit位, 字节是计算机最小的存储单位是字节Byte,计算机最小的识别单位是bit位
硬盘的特点:
-
数据断电后不丢失
-
可重复读写
-
相对于内存,速度慢
机械硬盘的转速:5400,7200,10000,150000
5400:写(30-50MB/s)读(50-80MB/s)
固态硬盘:非常贵,速度快,读(500MB/s) 写(300MB/s)
内存:
-
断电数据丢失
-
读写速度极快
时钟频率:每秒钟可以有多少次的震荡,频率越高,CPU每单位时间可以干更多的事
1000Hz=1KHz 1000KHz=1MHz 1000MHz=1GHz
CPU有两种指令集:1. 复杂指令集 2. 精简指令集
运算速度并不仅仅取决于CPU的主频,也受限于传输的速度等,这就是外频
RAM的DDR4 2400表示MHz
固态硬盘的速度还是要远低于内存的速度(6GB/s), CPU还必须要等待硬盘来加载数据到内存中
北桥的总线称为系统总线,因为是内存传输的主要通道,所以速度较快。南桥就是所谓输入\输出(I\O)系统总线,主要是联系硬盘,USB和网卡等周边设备
每次传输的位数就是系统总线的宽度,32位和64位。
32bit系统,硬件的前端总线和CPU的位数都是32位,能支持的最大的内存地址是4GB
现在的CPU:Intel和AMD
Intel:
I3-
I5-
I7-
CPU多核的概念,单核代表同一时间只能做一件事情,单核多线程,每件事都会分成很小的部分,几件事轮流分几次完成,CPU运算速度非常快,人无法感知,所以认为是同时发生的。
浙公网安备 33010602011771号