操作目录:
切换目录:cd 目录
cd ~:回到自己的家目录里
change directory 更改目录
目录路径的写法:
- 绝对路径:以/
开头的路径,表示从根目录查找
- 相对路径:
- 以./
开头的路径:当前目录里。./
可以省略不写
- 以../
开头的路径:上级目录里
查看在哪个目录里:`pwd`
创建目录 `mkdir 目录`
`mkdir /root/abc`,
表示在`/root`下边创建文件夹,名称是`abc`
`mkdir aaa`或者`mkdir ./aaa `,
表示在当前目录下创建文件夹,名称是`aaa`
查看目录 `ls -al`
参数:
- `a`:all,目录里所有的资源,包括隐藏的
- `l`:以列表形式显示
常用的是:`ls -l`, 有一个缩写命令`ll`
拷贝目录 `cp -r 源目录 目标目录`
参数:
- `r`,表示迭代操作,操作文件夹及里边的内容
`cp -r ./abc /root`,表示把当前目录里的abc,拷贝到`/root`里边
重命名/移动剪切目录 `mv 源目录 目标目录`
说明:
如果`目标目录`是已经存在的,表示要把`源目录`移动到`目标目录`里边
如果`目标目录`是不存在的,表示要把`源目录`重命名成为`目标目录`
`mv ./abc /`:把当前目录里的abc,剪切到`/`目录下边
`mv ./aaa ./a1`:要把当前目录里的aaa,重命名成为`a1`
删除目录 `rm -rf 目录`
参数:
`r`:表示迭代操作,删除目录及里边的内容
`f`:表示强制删除不提示
`rm -rf ./a1`:删除当前目录里的a1文件夹
`rm -rf /`:删除Linux里所有文件!!不要用!!
搜索 `find 位置 -name 名称`
`find / -name "*jdk"`:从整个Linux里搜索以jdk结尾的文件/文件夹
操作文件:
创建文件 touch 文件
touch javaee.txt
:在当前目录里创建文件javaee.txt
查看文件 `cat/more/less/tail`
`cat 文件`:查看文件的所有内容
`more 文件`:分页查看文件内容。
回车下一行,空格下一页,按`q`退出查看。不能往回看
`less 文件`:分页查看文件内容。回车下一行,空格下一页,
上下方向键可以来回看,按`q`退出查看
`tail 文件`:查看文件尾部的内容,通常用于查看日志文件
`tail install.log`:查看当前目录里`install.log`尾部10行内容
`tail -n 20 install.log`:查看当前目录里`install.log`尾部20行内容
`tail -n 20 install.log >> tall.log`:当前目录里`install.log`尾部20行内容输出到当前目录里的tall.log
head 文件:查看文件开头内容
head -n 20 install.log:查看当前目录里`install.log`前20行内容
head -n 20 install.log>>tall.log:将当前目录里install.log`前20行内容输出到当前目录里的tall.log
拷贝文件`cp 源文件 目标文件`
重命名/剪切文件 `mv 源文件 目标文件`
`mv ./javaee.txt /`:把当前目录里的javaee.txt移动到根目录里
`mv ./javaee.txt web.txt`:把当前目录里的javaee.txt重命名成为web.txt
删除文件`rm -f 文件`
`rm -f ./web.txt`
搜索文件内容 `grep 搜索内容 文件 --color`
`--color`:搜索结果高亮显示
`grep "jdk" ./install.log --color `
修改文件:使用软件(命令)`vim`★
1.`vim 文件`:用vim打开文件,进入普通模式
2.按`i/a/o`:进入编辑模式,可以编辑文件的内容
* `i`:在光标前边插入
* `a`:在光标后边插入
* `o`:在光标下一行插入
* `O`:在光标上一行插入
3. 按`ESC`:回到普通模式
4. 按`:`:进入底行模式
* `wq`:保存并退出
* `q!`:强制退出不保存
* `w`:保存
注意:
ctrl + s
表示冻结窗口;ctrl + q
解冻
压缩与解压缩
压缩:tar -zcvf 压缩包 文件1 文件2 ...
参数:
- z
:调用压缩命令,执行压缩操作
- c
:压缩后要创建压缩文件
- v
:显示压缩过程(可以不写)
- f
:指定压缩包文件名称。后边跟参数值:压缩包名称
=解压缩★=:`tar -xvf 压缩包 -C 解压位置`
参数:
- `x`:extract, 调用解压命令,执行解压操作
- `v`:显示解压过程(可以不写)
- `f`:指定压缩包文件名称。后边跟参数值:压缩包名称
- `C`:指定解压的位置(可以不写)
- 如果写参数`C`:就需要指定解压的位置,必须是已经存在的文件夹
- 如果不写参数`C`:要解压到当前文件夹里
其它常用命令:
查看端口:netstat -anp
查看网络配置:`ifconfig`
查看进程:`ps -ef`
- 参数:
- `e`:显示所有进程
- `f`:显示进程的详细信息
结束进程:`kill -9 pid`
`9`是通讯信号,表示强制结束进程
管道符:`|`,用于把多个命令连接起来,前边命令的结果,
交给下一个命令去处理
例如:`ps -ef | less`
服务管理:比如管理MySql的服务
- `service 服务名 stop`:停止服务
- `service 服务名 start`:启动服务
- `service 服务名 restart`:重启服务
- `service 服务名 status`:查看服务的运行状态
启用/关闭网络
* 启用网络服务:`service network start`
* 关闭网络服务:`service network stop`
* 重启网络服务:`service network restart`
关机:`halt`
重启:`reboot`
切换用户:su - 用户名
清屏:ctrl+l
查看磁盘使用情况:df -h
显示文件系统使用情况:du -h
建立硬链接:In 源文件 创建的文件名
显示文件的元数据:stat 文件名字
输入前十行内容:head 文件名字
输入任意后几行:head -3 文件名字 --3是你输入3行
指定内容展示颜色:grep --color "10.6.14.73"
防火墙的操作
* 查看防火墙状态:`service iptables status`
* 临时开启防火墙:`service iptables start`
* Linux重启后,防火墙恢复成默认状态
*永久关闭防火墙:chkconfig iptables off
* 临时关闭防火墙:`service iptables stop`
* Linux重启后,防火墙恢复成默认状态
* 注意:如果关闭防火墙,会有比较大的安全隐患,不建议关闭防火墙
* 设置防火墙开机启动:`chkconfig iptables on`
* 防火墙默认是开机自启动的,所以通常不需要再执行这个命令
* 设置防火墙:放行某一端口
* 第一步,开放端口:`/sbin/iptables -I INPUT -p tcp --dport 端口 -j ACCEPT`
* 第二步,保存设置永久生效:`/etc/rc.d/init.d/iptables save`
VMWare的网络模型
-
桥接模式
- 桥接网络模型就是使用虚拟交换机将虚拟机和物理机连接起来,它们处于同一个网段。
- 容易ip冲突
-
NAT
-
俗称网络地址转换,是将内部私有网络地址翻译成合法网络地址。
-
相当于开辟了一个局域网,虚拟机把主机当成网关,通过主机的网络地址转换进行上网。
-
不易ip冲突
-
-
仅主机
? 使用vmnet1实现主机和虚拟机的连接,但虚拟机不能上网
Linux测试端口是否ping的方法:
1.telnet法:
1.使用:telnet ip port
2.说明:
1.ip:是测试主机的ip地址
2.port:是端口,比如80
3.telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性
2.ssh法:
1.使用:ssh -v -p port username@ip
2.说明:
1.-v 调试模式(会打印日志)
2.-p 指定端口
3.username:远程主机的登录用户
4.ip:远程主机
3.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性
3.curl法:
1.使用:curl ip:port
2.说明:
1.ip:是测试主机的ip地址
2.port:是端口,比如80
3.curl是利用URL语法在命令行方式下工作的开源文件传输工具
4.如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。
4.wget方法:
1.使用:wget ip:port
2.说明:
1.ip:是测试主机的ip地址
2.port:是端口,比如80
3.wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理
4.如果远程主机不存在端口则会一直提示连接主机
其他:
1.uname -r:查看linux的内核版本号
2.free命令使用
1. free --help:查看下free命令的用法
2. free -b:以bytes字节来计算
3. free -k:以kb来计算
4. free -m:以mb为单位计算
5. free -g:以gb为单位计算
6. free -h:以比较友好的方式显示:显示单位G并且以gb为单位计算
7. free -l:显示详细的低内存和高内存统计计算
8. free -o:使用旧格式(没有 -/+buffers/cache 这一行)
9. free -t:展示RAM和swap的合计
10. free -s N:每相隔N秒重复打印一次内存信息,直到你按下 Ctrl + c
11. free -c N:重复打印N次内存信息,然后退出
12. free -V:显示版本号信息
13. free:
1.centos6以及6之前:–输出三行信息
1.行:
1.Mem:内存的使用情况
2.-/+ buffers/cache:表示物理内存已用多少,可用多少
3.Swap:交换空间的使用情况
2.列:
1.total:总量 --Mem行中total = used + free
2.used:已使用的 -- -/+ buffers/cache的used = Mem这一行的used - Mem这一行的buffers - Mem这一行的cached
3.free:空闲的 -- -/+ buffers/cache的free = Mem这一行的free + Mem这一行的buffers + Mem这一行的cached
4.shared:共享的,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份
5.buffers:缓存,可回收
6.cached:缓存,可回收
2.centos6之前之后
1.行:
1.Mem:内存的使用情况
2.Swap:交换空间的使用情况
2.列:
1.total:总量 --Mem行中total = used + free
2.used:已使用的 -- -/+ buffers/cache的used = Mem这一行的used - Mem这一行的buffers - Mem这一行的cached
3.free:空闲的 -- -/+ buffers/cache的free = Mem这一行的free + Mem这一行的buffers + Mem这一行的cached
4.shared:共享的,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份
5.buff/cache:缓存,可回收
6.available:还可以被 应用程序 使用的物理内存大小 available = free + (buff/cache通过一个算法后产生的值)
14.cached和buffers:
1.buffers以裸设备或分区为背景,cached以文件系统里的文件为背景。
1.cat /dev/sda1 > /dev/null,那**/dev/sda1的内容进入buffers**
2.cat /opt/test.py > /dev/null,则**/opt/test.py的内容进入cached**。
2.buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。
3.cat /proc/meminfo :内存使用情况
4.sysctl命令:
1.用于运行时配置内核参数,这些参数位于/proc/sys目录下
2.sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等
3.用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。
4. 命令格式:
1.命令:
1.sysctl [-n] [-e] -w variable=value
2.sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
3.sysctl [-n] [-e] -a
2.常用参数的意义:
1. -w :
1. 临时改变某个指定参数的值
例如: sysctl -w net.ipv4.ip_forward=1
2. -a :
1.显示所有的系统参数
3. -p :
1. 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
例如: sysctl -p /etc/sysctl.conf
4. 如果仅仅是想临时改变某个系统参数的值,可以用两种方法来实现
1.例如想启用IP路由转发功能:
1. #echo 1 > /proc/sys/net/ipv4/ip_forward
2. #sysctl -w net.ipv4.ip_forward=1
2.系统重启,或执行了# service network restart 命令
1.所设置的值即会丢失
2.永久保留配置,可以修改/etc/sysctl.conf文件
1.例如:
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
5.ps 命令:
1.该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等
2.ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了
3.ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
4.操作:
1.man ps
1.获得ps的详细参数用法
2.参数:
1. -A :
所有的进程均显示出来,与 -e 具有同样的效用;
2. -a :
显示现行终端机下的所有进程,包括其他用户的进程;
3. -u :
以用户为主的进程状态 ;
4. x :
通常与 a 这个参数一起使用,可列出较完整信息。
3.输出格式规划:
1. l :
较长、较详细的将该 PID 的的信息列出;
2. j :
工作的格式 (jobs format)
3. -f :
做一个更为完整的输出。
4.特殊说明:
1.ps 能够支持的系统类型相当的多,所以他的参数多的离谱
2.有没有加上 - 差很多!详细的用法应该要参考 man ps
2.例子
1. ps -l
1.将目前属于您自己这次登入的 PID 与相关信息列示出来
2.列信息意义:
1. F 代表这个程序的旗标 (flag), 4 代表使用者为 superuser;
2. S 代表这个程序的状态 (STAT);
3. UID 代表执行者身份
4. PID 进程的ID号!底下的 PPID 则父进程的ID;
5. C CPU 使用的资源百分比
6. PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;
7. NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。
8. ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行 的程序,一般就是『 - 』
9. SZ 使用掉的内存大小;
10. WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
11. TTY 登入者的终端机位置啰;
12. TIME 使用掉的 CPU 时间。
13. CMD 所下达的指令名称
2. ps aux
1.列出目前所有的正在内存当中的程序
2.列信息意义:
1. USER:该进程属于那个使用者账号的?
2. PID :该进程的进程ID号。
3. %CPU:该进程使用掉的 CPU 资源百分比;
4. %MEM:该进程所占用的物理内存百分比;
5. VSZ :该进程使用掉的虚拟内存量 (Kbytes)
6. RSS :该进程占用的固定的内存量 (Kbytes)
7. TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
8. STAT:该程序目前的状态,主要的状态有:
1. R :该程序目前正在运作,或者是可被运作;
2. S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
3. T :该程序目前正在侦测或者是停止了;
4. Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
9. START:该进程被触发启动的时间;
10. TIME :该进程实际使用 CPU 运作的时间。
11. COMMAND:该程序的实际指令为什么?
3. ps -lA
1.将目前属于您自己这次登入的 PID 与相关信息列示出来 ,显示出所有的程序
4. ps -axjf
1.列出类似程序树的程序显示
5. ps aux | egrep '(cron|syslog)'
1.找出与 cron 与 syslog 这两个服务有关的 PID 号码
6.文件权限:
1.文件的权限针对三类对象进行定义:
1.owner 属主,缩写u
2.group 属组,缩写g
3.other 其他,缩写o
2.每个文件针对每类访问者定义了三种主要权限:
1.r:Read 读
2.w:Write 写
3.x:eXecute 执行
4.另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
5.root账户不受文件权限的读写限制,执行权限受限制
3.对于文件和目录来说,r,w,x有着不同的作用和含义:
1.文件:
1.r:读取文件内容
2.w:修改文件内容
3.x:执行权限对除二进制程序以外的文件没什么意义
2.目录:
1.目录本质可看做是存放文件列表、节点号等内容的文件
2. r:查看目录下的文件列表
3. w:删除和创建目录下的文件
4. x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
4.用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看
5.修改文件访问权限方法:
1.mode法:
1.命令:chmod 修改权限 change mode
2.格式:chmod who opt per file
1.who:u g o a(all)
2.opt: + - =
3.per: r w x X
4.例子:chmod o +rwx data
对当前目录data文件夹的权限进行新增,新增为其他成员可对该文件夹有可读,可写,可执行权限
2.数字法:
1.命令:chmod XXX file
2.r:4,w:2,x:1
3.例子:
chmod 764 file: 给file文件添加 主:rwx 组:rw 其他:r 权限
6.UMASK值:
1.作用:取消对应的权限,影响创建文件和目录的默认权限
2.对目录: umask+default=777(dir)
3.对文件:666-umask:观察结果,如果有奇数,奇数位+1,偶数不变
7.三种特殊权限suid、sgid、sticky
1.sticky权限工作环境中相对常用
2.suid:
1.作用:给一个用户继承二进制程序所有者拥有的权限
2.suid权限位 位于所有者的执行权限位上,如果一个文件具有suid权限,则所有者执行位为s,文件表现为红色背景
3.例子:
1.ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
2.给file文件增加suid权限
1.chmod u+s file
2.chmod 4755 file suid数字法表示为4
4.注: suid只适合作用在二进制程序上
3.sgid:
1.作用:
1.给一个用户继承二进制程序所有组拥有的权限
2.作用在目录上时,使一个目录下的新建的文件继承目录的所属组
2.sgid权限位 位于所有组的执行权限位,如果一个文件具有suid权限,则所有组的执行位为s,文件表现为黄色背景
3.例子:
1.`which cat`
-rwxr-sr-x. 1 root root 48568 Mar 23 2017 /bin/cat
2.给file文件增加sgid权限
1.chmod g+s file
2.chmod 2755 file sgid数字法表示为2
4.sticky:
1.作用:作用于目录上,此目录的文件只能被所有者删除
2.sticky权限位 位于其他的执行权限位上,如果一个文件具有sticky权限,则其他的执行位为t,目录表现为绿色背景
3.例子:
1.ll -d /tmp
drwxrwxrwt. 17 root root 4096 Apr 4 10:02 /tmp
2.给dir目录添加sticky权限
1.chmod o+t dir
2.chmod 1777 dir sticky数字法表示为1
8.ACL访问控制列表
1.作用:实现更加灵活的权限管理,打破了三类用户的权限管理
2.添加ACL权限:
1.setfacl -m u:wang:0 file 使wang账户对指定file文件无权限
2.setfacl -m u:mage:rw file 使mage账户对指定file文件有读写权限
3.setfacl -m g:g1:rw file 使g1组对指定file文件有读写权限
4.getfacl file 查看指定file文件的ACL权限
5.ACL权限执行顺序类似于用户获取文件权限的顺序,getfacl顺序从上到下执行,一旦生效,下面的将不再生效(如果属于多个组,权限累加)
3.删除ACL权限:
1.setfacl -x u:wang file 删除wang账户对指定file文件的ACL权限
2.setfacl -x g:g1 file 删除g1组对指定file文件的ACL权限
4.ACL权限下的mask:
1.设置用户对指定文件所能拥有的最大权限(限高作用)
2.setfacl -m mask::r file 使指定文件file所拥有的最大权限位读r
3.setfacl -x mask::r file 取消指定文件file的最大权限限制mask
4.setfacl -b f1 取消f1文件所有的ACL权限
5.ACL生效顺序:所有者、自定义用户、自定义组、其他人
5.备份和恢复ACL权限:
1.getfacl -R /tmp/dir1>acl.txt 将dir1目录下ACL权限备份
2.setfacl -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
9.文件权限操作的常用命令
1.chown 设置文件所有者(普通用户无法修改文件所有者)
2.chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)
3.chmod 设置指定文件权限
1.-R 递归处理,将指令目录下的所有文件及子目录一并处理
2.–reference=f1 f2 f3 参考f1文件权限设置f2,f3文件
4.chattr 给指定文件添加保护,避免root账户误操作
1.+i 锁定文件,不能删除,不能改名,不能更改内容
2.-i 解锁+i
3.-a 锁定文件,不能删除,不能改名,但可追加内容(追加重定向)
4.-a 解锁+a
5.+A 指定文件读时间atime不再更改
5.lsattr 查看指定文件是否有锁定状态
6.setfacl 设置文件ACL权限
1. -m mask::r file 使指定文件file所拥有的最大权限位读r
2. -x mask::r file 取消指定文件file的最大权限限制mask
3. -b f1 取消f1文件所有的ACL权限
4. -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
7.getfacl 查看文件ACL权限
10.解读:
1.执行命令 ll 得到:
1.drwxrw-rwt. 9 root root 280 May 28 14:01 tmp
1.第一位表示文件类型:
1.- :表示文件
2.d : 表示文件夹
3.l :表示链接文件,可以理解为 windows中的快捷方式(link file);
4.b :表示里面可以供存储周边设备;
5.c :表示里面为一次性读取装置。
2.第2,3,4位,拥有者具有的权限。
1.类似于windows中的所有者权限,比如 administrator 对文件具有的权限。
2.“drwxrw-rwt“,表示这个组的成员具有可读(r)、可写(w)、可执行(x)的权限
3.第5,6,7位,属于这个组的成员具有的权限。
1.类似于windows中的组权限,比如administrators组,属于这个组的成员对于文件的权限。
2.“drwxrw-rwt“,表示其他成员具有可读(r)、可写(w)、不可执行(-)的权限。
4.第8,9,10位,其他成员具有的权限。
1.类似于windows中的anyone一样,就是说所有人对这个文件都会有一个怎样的权限。
2.“drwxrw-rwt“,表示其他成员具有可读(r)、可写(w)、可执行(x)的权限。
5. 第一个root是拥有者,第二个root是组
7.vi模式下的快捷键:
1.esc后:
1.shift+z+z:保存并且退出
2.shift+g:光标跳到最后一行
3.dd:删除一行
4.y+y:复制一行内容
5.p:粘贴复制的内容
8. sudo 命令:
1.sudo -V :列出 sudo 的版本资讯
2.sudo -h :会显示版本编号及指令的使用方式说明
3.sudo -l :显示出自己(执行 sudo 的使用者)的权限
4.sudo -v : sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
5.sudo -k :将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
6.sudo -s :执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
7.sudo -H :将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
8.sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s:
1.-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
2.-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
9.sudo command : 要以系统管理者身份(或以 -u 更改为其他人)执行的指令