概述:Linux&shell
[TOC]
1.文件系统目录结构
“一切皆为文件”
/dev 管理设备(cpu、disk、dvd、usb等)
/media 目录,linux自动识别设备,例如U盘、光驱,识别后的设备挂载到该目录
/bin 最常使用的命令(Binary) /usr/bin;/usr/local/bin
/sbin 系统管理员使用的系统管理程序(Super User) /usr/sbin;/usr/local/sbin
/home 存放普通用户主目录,每一个用户都有自己的目录,通常以用户名命令
/root 系统管理员/超级权限者的用户主目录
/lib 系统开机需要的动态连接共享库,类似于windows的dll文件,几乎所有应用程序都涉及该部分的共享库
/lost+found 该目录通常为空的,当系统非法关机后,会存放一些文件
/etc 所有系统管理所需要的的配置文件和子目录
/usr 用户大多数应用程序和文件,类似于windows的program file目录
/boot 存放启动linux的核心文件,包括连接文件和镜像文件
/proc 虚拟目录,系统内存的映射,获取系统信息
/srv 服务启动后所提取的数据(service)——不动
/sys linux2.6内核的变化,安装2.6内核新出现文件系统sysfs
/tmp 临时文件
/mnt 用户临时挂载别的文件系统,将外部存储挂载在/mnt,可以查看具体内容
/opt 主机额外安装软件的目录,例如按照oracle数据库可存放在该目录(安装包)
/usr/local 给主机额外安装软件的目录,通过编译源码方式安装的程序(/usr/local/mysql)
/var 存放不断扩充的或频繁修改的文件/目录以及日志文件
/selinux SELinux是一种安全子系统,可控制程序仅访问指定文件(security-enhanced linux)
2.远程连接
linux需要开启一个sshd服务(端口:22)
1 | servie sshd start |
查看服务是否开启
1 | setup |
3.vi/vim的使用
命令模式<==Esc==一般模式/正常==i或者a==>编辑模式
命令模式:
(1)保存并退出——:wq
(2)退出——:q
(3)设置/取消行号——:set nu 和 :set nonu
(4)跳到指定第n行——:set ;n;shitf+g
4.关机、重启、注销
1 | shutdown |
5.用户管理
创建用户
1 | useradd 用户名 |
成功会自动创建与用户名相同的目录(在/home),也可以通过以下命令指定目录
1 | useradd -d 指定目录 新用户 |
修改密码
1 | passwd 用户名 |
删除用户
1 | userdel 用户名:删除用户 |
查看用户信息
1 | id 用户名 |
切换用户
1 | su -用户名 |
添加组
1 | groupadd 组名 |
删除组
1 | groupdel 组名 |
增加用户指定组
1 | useradd -g 用户组 用户名 |
修改用户指定组
1 | usermod -g 用户组 用户名 |
用户信息会存放在:/etc/passwd
1 | 用户名:x(密码):numb1(用户id):numb2(组id):/home/用户名(用户目录):/bin/bash(shell) |
组配置文件会存放在:/etc/group
1 | 组名:x(口令):num(组id):[组内用户名] |
口令和密码配置文件(加密):/etc/shadow
6.密码重置
(1)指定运行级别:
0:关机
1:单用户(找回丢失密码)
2:多用户状态(无网络服务)
3:多用户状态(有网络服务)
4:系统未使用(保留)
5:图形界面
6:系统重启
常用运行级别:3和5,修改默认运行级别
1 | /etc/inittab的id:5:initdefault的级别数 |
或者命令
1 | init [0123455] |
(2)找回root密码
a.重启进入menu(Press any key to entre the menu)
b.输入‘e’ ,’e‘ to edit the commands befor booting
c.光标kernel / vmlinuz - 2.6输入’e’
d.添加1==>entre(’单用户级别’)
e.输入‘b’(boot)===>(‘以root登录单用户模式’)
7.帮助命令
1 | help 命令 |
8.文件目录命令
1 | ls :显示当前目录的文件及子目录 |
9.写入指令
1 | 指令 > 文件:写入 |
10.时间日期类
1 | date:显示当前时间 |
11.搜索查找类
1 | find [搜索范围] [选项] |
10.压缩/解压缩指令
1 | gzip /gunzip |
11.组管理和权限管理
1 | 查看文件所有者:ls -ahl |
12.任务调度
1 | crontab:进行定时任务的设置 |
实例1:每隔一分钟,将当前日期信息追加到/tmp/mydate文件
(1)编写 /home/mytask1.sh
文件内容:date >> /tmp/mydate
(2)赋予mytask1.sh执行权限(chmod 744 /home//mytask1.sh)
(3)crontab -e
(4)*/1 * * * * /home/mytask1.sh
实例2:每天凌晨2:00将mysql数据库test.db备份到mydb.bak
(1)编写/home/mytaks2.sh
文件内容:/usr/local/mysql/bin/mysqldump -u 用户名 -p密码 testdb > /tmp/mydb.bak
(2)赋予mytask2.sh执行权限(chmod 744 /home//mytask2.sh)
(3)crontab -e
(4)0 2 * * * * /home/mytask2.sh
crond相关指令:
1 | crontab -l 显示 |
13.磁盘分区
(1)mbr分区:
a.最多支持4个主分区
b.系统仅能安装在主分区
c.扩展分区占1个主分区
d.mbr最大支持2TB,兼容性较好
(2)gtp分区
a.支持无限多个主分区(windows下仅支持128个分区)
b.最大支持18EB大容量(EB=1024PB,PB=1024TB)
c.window7 64后支持gtp
windows下的磁盘分区
主分区(primary partition)
扩展分区(extended partition):n个逻辑分区(logical)
linux分区
a.仅存在一个根目录(独立且唯一)
b.采用“载入”的处理方法,整个文件系统包含了一整套的文件和目录,将一个分区和目录联系,要载入的分区将它的存储空间在一个目录下获得
硬盘说明:
a.linux硬盘分IDE硬盘和SCSI硬盘,主流SCSI硬盘
b.对于IDE硬盘,驱动器标识符为“hdx”,其中”hd”表示分区所在设备的类型,指IDE硬盘,“x”为盘号(a为基础盘;b为基础从属盘;c为辅助硬盘;d为辅助从属盘,“”代表分区,前四个分区用数字1-4表示,是主分区或者扩展分区,5开始为逻辑分区,例如hda3表示第1个IDE硬盘上的第3个主分区或者扩展分区,hdb2表示为第2个IDE硬盘上的第2个主分区或者扩展分区)
c.对于SCSI硬盘标识为“sdx~”,SCSI硬盘使用“sd”表示分区所在设备的类型,其余与IDE硬盘表示一致。
查看系统分区和挂载情况
1 | lsblk -f |
※ SWAP:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中。
挂载:在linux系统中增加一个新的硬盘,并挂载到/home/newdisk
步骤:
a.添加硬盘
b.分区
c.格式化
d.挂载
e.设置自动挂载
1 | 添加硬盘: |
磁盘整体使用情况:
1 | df -lh |
查询指定目录的磁盘占用情况:
1 | du -h /目录 |
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细和增加汇总值
实例:查看/opt目录磁盘占用情况,子目录深度1
1 | du -ach --max-depth=1 /opt |
统计/home文件夹下文件个数:
1 | ls -l /home | grep "^-" | wc -l |
统计/home目录个数:
1 | ls -l /home | grep "^d" | wc -l |
统计/home文件夹下文件及子文件内的数量:
1 | ls -lR /home | grep "^-" | wc -l |
树状显示目录:
1 | yum install tree(提示:ubuntu用apt-get) |
14.网络配置
linux网络配置原理图(含虚拟机)
目前采用是NAT模式
(1)查看虚拟网络编辑器\和修改ip地址(修改虚拟网卡)
1 | VMware > 编辑 > 虚拟网络编辑器 |
(2)配置自动连接
1 | linux界面>系统>首选项>网络连接> System eth0 > 自动连接 |
(3)指定固定ip地址
1 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
15.进程和服务
(1)linux每一个执行的程序/代码都是一进程(配ID)
(2)每一个进程对应一父进程,父进程可复制多个子进程,例如www服务器
(3)每一进程有2种方式存在(前台,后台)
(4)一般系统服务以后台进程存在,常驻系统中直至关机
查看进程
1 | ps -aux |
查看sshd服务(远程登录服务)
1 | ps -aux | grep sshd |
终止进程
1 | kill [选项] 进程号 |
终止多个gedit编辑器
1 | killall gedit |
强制终止
1 | kill -9 pid |
查看进程树
1 | pstree |
服务管理指令:
1 | service 服务名 [start|stop|restart|reload|status] |
查看防火墙状态:
1 | service iptables status |
(Tip )windows的运行清除命令:cls
查看服务名:
1 | 方式1:使用setup->系统服务 |
服务运行级别(runlevel):(7种)常用级别3和5
查看/修改级别:vi /etc/inittab
运行级别0:系统停机状态,系统默认不能为0,无法正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(无nfs),不支持网络
运行级别3:完全的多用户状态(有nfs),登录后进入控制台命令模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入GUI
运行级别6:系统正常关闭并重启,默认不能为6,无法正常启动
开机流程:
开机->BIOS->/boot->-init进程>-运行级别>-运行级别对应服务
服务管理——chkconfig指令:
1 | 查看服务各个运行级别的状态: |
动态监控进程:
1 | top [选项] |
监视指定用户:
1 | top |
监控网络状态
查看系统网络情况netstat:
1 | netstat [选项] |
16.RPM和YUM包
RPM:RedHat Package Manager(RedHat软件包管理工具)
查询已安装的rpm列表:
1 | rpm -qa | grep xx |
查看安装rpm软件信息:
1 | rpm -qi xxx |
查看rpm包的文件安装位置:
1 | rpm -ql xxx |
查看文件对应的安装包:
1 | rpm -qf 目录 |
卸载rpm包:
1 | rpm -e xxx(firefox) |
安装rpm包:
1 | rpm -ivh rpm包路径 |
安装firefox:
1 | rpm -ivh xxx |
yum:shell前端软件包管理器,基于rpm包管理,可从指定服务器下载rpm包并安装,可自动处理依赖性关系,并一次性下载所有依赖包。
查询yum服务器是否有需要安装的软件
1 | yum list | grep xxx |
安装yum包:
1 | yum install xxx |
17.JDK的安装和配置
(1)apache-tomcat;jdk;eclipse;mysql的tar.gz包
(2)解压tar.gz
1 | tar -zxvf jdk.tar.gz |
(3)配置环境
1 | vim /etc/profile |
(5)安装tomcat
a.解压到/opt
b.启动tomcat ./startup.sh
c.开放端口 vim /etc/sysconfig/iptables
在windows下测试访问:http://linuxip:8080
1 | tar -zxvf ... |
(6)安装eclipse
a.解压到/opt
b.启动eclipse,配置jre和server
c.编写Helloworld
d.编写jsp和测试
1 | tar -zxvf ... |
(7)安装mysql
1 | 1.是否有按照mysql server |
18.shell编程
shell是一个命令行解释器,为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序。
硬件->内核->shell命令行解释器->外层应用程序
shell快速入门:
a.脚本以#!bin/bash开头
b.脚本需要可执行权限
输出hello,world!
1 | vi myShell.sh |
1 | chmod 744 myShell.sh |
(1)变量
变量分为:系统变量和用户自定义变量
系统变量:$HOME、$PWD、$SHELL、$USER
显示当前shell所有变量:set
注意定义变量值时不能添加空格
1 | A=100 |
位置参数变量:
当我们执行shell时,希望获取命令的参数信息,例如:
1 | ./myshell.sh 100 200 |
基本语法:
$n(n为数字,$0表示命令本身,$1-9表示第1-9个参数,10以上参数要用括号${10})
$* 表示命令行中所有参数,$*把所有参数看作一个整体
$@ 表示命令行中所有参数,$@把每个参数区分对待
$# 表示命令行的所有参数个数
应用实例:编写一个shell脚本postionPara.sh,获取命令行各个参数信息
1 | pos.sh |
预定义变量
事先定义的变量
基本语法:
$$ 当前进程号PID
$! 后台运行的最后一个进程号PID
$? 最后一次执行的命令返回状态,如果这个变量的值为0,则证明上一命令正确,该变量值非0,则证明上一命令执行不正确。
应用实例:在一个shell脚本中使用预定义变量
1 | #!/bin/bash |
(2)运算符
基本语法
a.“$((运算式))或$[运算式]”
※ (())有两层嵌套
b.expr m + n
※ 注意有空格
c.expr \ * , / , % 乘,除,取余
应用实例1:计算(2+3)×4
1 | #!/bin/bash |
应用实例2:求出命令行2个参数的和
1 | #!/bin/bash |
(3)条件判断
基本语法:
[ condition ]
注意:condition前后有空格
非空则返回true;可适用$?验证(0为true,>1为false)
判断语句:
(a)整数比较
1 | = 字符串比较 |
(b)按文件权限判断
1 | -r 有读权限 |
(c)文件类型判断
1 | -f 文件存在且常规文件 |
(d)应用实例
案例1:”ok”是否等于”ok”
注:很多个地方有空
if空格[空格“ok”空格=空格“ok”空格]
1 | #!/bin/bash |
1 | chmod 744 judge.sh |
案例2:23是否大于22
1 | if [ 23 -gt 22 ] |
案例3:/root/install.log文件是否存在
1 | if [ -e /root/shell/aaa.txt ] |
if和else判断
1 | #!/bin/bash |
case语句:
案例1:当命令行参数为1则输出周一;2则输出周二;其它则输出”other”
1 | #!/bin/bash |
(4)for和while循环
1 | #!/bin/bash |
案例:输出1+2+…+100
1 | #!/bin/bash |
案例:从命令行输入一个数n,统计1+…+n的值?
1 | #!/bin/bash |
(5)读取控制台输入
基本语法
read [选项] (参数)
-p 指定读取值时的提示符
-t 指定读取值等待时间(秒),如果没有指定时间输入,就不再等待
应用实例1:读取控制台输入一个num值
1 | read -p "输入一个数=" NUM1 |
应用实例2:读取控制台输入一个num值,在10秒内输入
1 | read -t 10 -p "输入一个数=" NUM1 |
(6)函数
函数:系统函数和自定义函数
系统函数:
basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix] 功能描述:basename命令会删除所有的前缀包括最后(’/‘)字符,将字符串显示出来
选项:suffix为后缀,若suffix指定,basename将pathname或string的suffix去掉
应用实例:返回/home/aaa/test.txt的”test.txt”部分
1 | 命令:basename /home/aaa/test.txt |
1 | 命令:basename /home/aaa/test.txt .txt |
dirname基本语法
功能:返回完整路径最后的/前面部分
应用实例:返回/home/aaa/test.txt的/home/aaa
1 | 命令:dirname /home/aaa/test.txt |
自定义函数:
基本语法
1 | [ function ] function_name[()] |
应用实例:计算输入两参数之和
1 | #!/bin/bash |
(7)综合案例
a.每天凌晨2:10备份数据库atguiguDB到/data/backup/db
b.备份开始和结束要求提示信息
c.备份后文件以备份时间为文件名,并打包成.tar.gz形式,例如:2018-03-12_230201.tar.gz
d.备份的同时,检查是否存在前10天的数据库文件,若有则删除
/usr/sbin/mysql_db_backup.sh文件内容
1 | #!/bin/bash |
1 | 将上述脚本设置定时执行 |
※ 补充内容
(1)可采用sh或bash + 脚本相对路径或者绝对路径(不需要赋予脚本x权限)
1 | sh myShell.sh |
(2)在a.txt中追加“I love you”
1 | #!/bin/bash |
(3)bash中变量的默认类型均为字符串,不可以直接数字运算
1 | A=1+1 |
(4)将变量提升为全局环境变量,可供其他shell程序使用
1 | 在外部B=haha |
19.Shell工具
(1)cut
在文件中负责剪切数据
1 | cut [选项参数] filename |
示例文件 cut.txt
1 | dong shen |
eg. 分割cut.txt第一列
1 | cut -d " " -f 1 cut |
eg.分割cut.txt第二、三列
1 | cut -d " " -f 2,3 cut |
eg.找到以guan开头行的第二列
1 | cat cut.txt | grep guan | cut -d " " -f 2 |
eg.选择系统PATH变量值,第二个”:”开始的所有路径
1 | echo $PATH | cut -d ":" -f 2- |
eg.切割ifconfig后打印的IP地址
1 | ifconfig eth0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1 |
(2)sed
sed是一种流编辑器,每次处理一行内容,把当前处理的行存储在临时缓冲区,称为“模式空间”,使用sed命令处理缓冲区中的内容,处理完成后,将缓冲区的内容送往屏幕,不断重复直至文件末尾,文件内容不会改变,除非使用重定向存储输出。
1 | sed [选项参数] 'command' filename |
命令功能描述:
1 | a 新增,a后可接字符串,在下一行出现 |
案例应用:
sed.txt
1 | dong shen |
将“boy girl”插入sed第二行并打印输出:
1 | sed "2a boy girl" sed.txt |
删除sed.txt包含wo的行
1 | sed "/wo/d" sed.txt |
将sed.txt文件的wo替换成ni
1 | sed 's/wo/ni/g' sed.txt #其中'g'表示global,全部替换 |
将sed.txt第二行删除并替换wo为ni
1 | sed -e "2d" -e "s/wo/ni/g" sed.txt |
(3)awk
文本分析工具,将文件逐行读入,以空格默认分隔符对每行切片,再分析处理
1 | awk [选项参数] 'pattern1{action1} pattern2{action2} ...' filename |
案例应用:
passwd文件
1 | sudo cp /etc/passwd ./ |
1 | root:x:0:0:root:/root:/bin/bash |
搜索passwd 文件以root关键字开头的所有行,输出该行第7列
1 | awk -F: '/^root/ {print $7}' passwd |
搜索passwd 文件以root关键字开头的所有行,输出该行第1,7列
1 | awk -F: '/^root/ {print $1","$7}' passwd |
在passwd 文件所有行前添加user,shell ,仅打印第1列和第7列,且在最后一行添加”heihei,xixi”
1 | awk -F: 'BEGIN{print"user,shell"} {print $1","$7} END {print "heihei,xixi"}' passwd |
将passwd文件的用户id加1
1 | awk -F: -v i=1 '{print $3+$i}' passwd |
awk内置变量
1 | FILENAME 文件名 |
案例应用:
(1)统计passwd 文件名,行号,每行列数
1 | awk -F: '{print FILENAME ,NR ,NF}' passwd |
(2)切割IP
1 | ifconfig eth0 | grep "inet addr" | awk -F:'{print $2}' | awk -F ' ' '{print $1}' |
(4)sort
对文件排序并将结果输出
1 | sort [选项参数] |
sort.txt
1 | bb:40:5.4 |
按照“:”分割后的第3列倒序
1 | sort -t : -nrk 3 sort.txt |
1 | bb:40:5.4 |
(5)综合案例
a.查询空行的行号
1 | awk '/^${print NR}' sed.txt |
b.计算第2列和并输出
1 | 张三 40 |
1 | cat chengji.txt | awk -F " " '{sum+=$2} END{print sum}' |
c.Shell检查一个文件是否存在
1 | #!/bin/bash |
d.对数字排序并求和
1 | cat test.txt |
1 | sort -n test.txt | awk '{a+=$0;print$0}END{print "SUM="a}' |
e.shell脚本查找/home所有文本包含”shen”的文件名称
1 | grep -r "shen" /home | cut -d ":" -f l |
20.Ubuntu
系统通常自带Python
(1)设置root密码
a.输入sudo passwd,输入一般用户密码后设置root密码
b.设定root密码成功后,输入su命令,并输入刚才设定的root密码,可切换成root,提示符$表示一般用户,提示符#表示root用户
c.输入exit后返回一般用户
(2)安装vim等工具
1 | apt install vim |
其中apt是Advanced Packaging Tool的简称,是一款安装包管理工具,可用apt用于软件安装、删除、清理等。
相关命令
1 | sudo apt-get update 更新源 |
更新Ubuntu软件下载地址(使用清华软件仓库镜像)
https://mirrors.tuna.tsinghua.edu.cn/
(1)备份Ubuntu默认源地址
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup |
(2)将sources.list清空
1 | echo '' > sources.list |
(3)将Ubuntu清华镜像使用帮助复制到sources.list
(4)更新源
1 | sudo apt-get update |
(3)SSH安装和启动
SSH为Secure Shell缩写,较为可靠,为远程登录会话以及资料拷贝。
Ubuntu没有自带SSH
1 | sudo apt-get install openssh-server |
=常见命令=
基础命令
- 超级用户:root
- 打开终端 ctrl+alt+t
- 查看硬件信息:lshw
- 查看cpu信息:lscpu
- 查看usb信息:lsusb
- 查看系统名(系统全部信息):uname [-a]
- 查看系统的架构 x86 表示32位 x86_64表示64位:arch
- 添加用户:adduser 用户名
- 设置密码:passwd 用户名
- 修改当前用户密码:passwd
- 切换用户:su(switch user)
- 进入用户目录(home):cd ~
- 删除用户:userdel 用户名
- 日期:date
- 更改时间:date -s ‘MMDDhhmmYYYY.ss’
- 查看文件路径:whereis 文件名
- 复制date:cp /bin/date ./work/mydate
- 查看环境变量:echo $PATH(:分隔)
- 加入新的环境变量:export PATH=$PATH:/home/user/work
- 文件名以.开头表示隐藏文件
- 查看文件目录:ls -l
- 查看隐藏文件:ls -la
- 查看命令:man ls
- 删除文件/目录:rm
- 删除空目录:rmdir
- 修改文件权限:chmod 744 my_date
- 创建文件:touch filea
- 查看文件内容(二进制):vi
- 查看文件内容(文本):cat
- 查看文件类型(例如是否为可执行文件scripte;text;executable):file 文件名
- ls显示首字母表示文件类型:-表示文件;d表示目录,rwx×3分别为user、group、other
- 将文件a和文件b打包成mytar.tar:tar cf mytar.tar filea fileb(c表示create;f表示file,打包对文件大小不压缩)
- 查看tar文件:tar tvf mytar.tar (t表示tar包具体文件和目录内容;v表示冗余详细信息;f表示file)
- 压缩tar文件:tar cjf mycompress.tar.bz2 filea fileb(j表示bz2压缩工具)
- 解压tar文件:tar xf mytar.tar -C mytar(x表示解压;C表示category解压目录)
- 比较文件目录:diff -r mycompress mytar (r表示recurrent)
- 对文件追加字符:echo “aaa” >> mycompress/mydate
- 查找指定文件名的路径:find /usr -name “time.c”(/usr为目录,-name参数,time.c表示文件名,*ime.c表示多个字符或者?表示单个字符模糊查找)
- 限制查找文件的类型:find . -type f -name “aaa”(f表示file文件;d表示directory目录)
- 限制查找用户的文件:find / -user username
- find高级应用:find /usr/src -name “*.c” -exec wc -l {} ;(其中exec后面表示linux的命令并以;结尾,因此要加入转义字符\;wc -l表示统计一个文件的行数;{}表示一次匹配的结果)
- find高级应用(复制):find /usr/src/ -name “*.c” -exec cp {} src/ ;
- find高级应用(统计数量):find /usr/src -name “*.c” >> count(将结果追加到count文件)
- 查找一个文件大小超过5M的文件:find . -type f -size +5M
- 统计数量而不产生文件方法:find /usr/src -name “*.c” >> count ; wc -l count ; rm count(一次执行多个命令)
- 显示行数:wc -l count(可查看数量)
- 统计字数:wc 命令 - c 统计字节数 - l 统计行数 - w
- 统计字数(基于管道):find /usr/src -name “*.c” | wc -l(左侧命令为右侧命令输入)
- vi显示行号:set number (或set nu)
- vi隐藏行号:set nonumber
- vi跳转第一行1G;末行GG;n行nG
- vi跳转行末尾$(shift+4)行首^(shift+6)
- vi删除一行dd
- vi撤销u
- vi选中操作v
- vi删除全文1G dG
- vi复制一行yy;粘贴p;选中复制v y
- vi剪切 x
- vi搜索 /main(使用n进入下一个)或 ?main
- vi自动缩进:光标到达某行输入100表示以下100行,按下==即自动缩进
- vi代码补全:ctrl+p
- 查看主机名:hostname
- 修改主机名:vi /etc/sysconfig/network(重启生效)
- 修改主机名:vi /etc/hosts (添加本机IP和名称)
- 关闭防火墙(centos7以下):service iptables stop
- 关闭防火墙(centos7以上):systemctl stop firewalld.service
- 查看用户的登陆日志:last
- 给所有登录再本机的用户发消息:wall
- 给当前联机的用户发消息:write
- 查看每个用户最后的登陆时间:lastlog
- 显示当前目录:pwd
- 创建组:groupadd groupname
- 修改文件组群:chgrp group file
- 修改文件所有人:chown user file
- 实时查看文件:tailf
- 查看进程:jps
- 生成500个1M的文件:dd if=/dev/zero of=test.txt bs=1M count=5000
- time dd if …. 查看上一命令花费时间
- RPM安装/更新/卸载:rpm -ivh 、rpm -Uvh、rpm -e
- YUM安装/更新/卸载:yum install 、yum update、yum remove
- 显示全部定时任务:crontab -l
- 编辑定时任务:crontab -e
- 使用nohup提交作业并立即执行,同时重定向输出文件,末尾&表示立即执行:nohup command > myout.file 2>&1 &
- 获取当前年月日:today=’date +%Y-%m-%d’
- 获取明天日期:date -d next-day +%Y%m%d
- 获取昨天日期:date -d last-day +%Y%m%d
- 获取昨天日期:date -d “+%Y%m%d
- 获取上周年月日:date -d “7 days ago” + %Y%m%d
- 查看最近1000行日志:tail -1000 xx.out
- 动态实时查看后端日志:tail -f
- 查看某个端口是否被占用:netstat -anp | grep 8080
- 查看当前所有已经使用的端口情况:netstat -nultp
- 显示进程pid:ps -ef| grep java
- 查看服务器内存使用情况:free -m
- 查看所有状态:ps -aux | grep java
- 杀死进程:kill -9 pid
- 创建链接文件:ln
- 启动tomcat:cd /java/tomcat/bin ./startup.sh ./shutdown.sh(注意./为当前目录,../上层目录)
- 查看当前进程: ps;执行退出: exit查看当前路径: pwd
- 软链接: ln -s slink source;硬链接: ln link source
- 硬链接:通过文件系统的inode来产生新档名,而不是产生新档案。
- 软链接:看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。
- 终端是 /dev/tty文件夹;黑洞文件是/dev/null
- 查看后台任务:job -l
- 磁盘空间 df -h
- 查看文件的类型:file 文件名/目录名
- 立即关机:poweroff
- 取消关机:Shutdown -c
- 取消关机:pkill shutdown
- 5分钟之后自动关机:shutdown -h +5
- 重启:reboot
- 重启:shutdown -r now
- 查看端口是否打开:lsof -i : 端口号
Linux软件包管理:
dpkg 管理工具,软件包名以.deb后缀。
比如安装tree命令的安装包,先将tree.deb传到Linux系统中,再使用命令。
sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件
sudo dpkg -r tree 卸载软件
APT高级软件工具,适合系统能够连接互联网,以tree为例。
sudo apt-get install tree 安装tree
sudo apt-get remove tree 卸载tree
sudo apt-get update 更新软件
sudo apt-get upgrade
系统目录
- cd / : 进入根目录
- bin:可执行的二进制文件,通常放的是系统自带的文件
- dev:Device,设备,通常系统的硬件被抽象成一个文件存放在dev中
- initrd.img:开机启动时的图片
- lost+found:异常关机时存放错误信息的文件
- opt:Options,存放开发者自己开发并安装的软件
- run:系统运行时需要的文件
- srv:存放服务启动后需要访问的文件数据
- usr:存放与用户直接相关的文件目录
- boot:启动配置文件,启动时需要的核心文件
- etc:配置文件(系统中各种所需要的配置文件)
- lib、lib64:库,系统内置的库文件,自己安装的各种软件的动态或静态的链接,windows中的dll很相似。
- media:媒体,存放是系统外接设备,如U盘,硬盘
- proc:系统文件
- sbin:系统管理员特用的二进制文件(root用户)
- sys:系统文件
- var:存放日志信息(启动日志,软件日志)
- cdrom:挂载入口
- home:家,每个用户都会在home目录下有一个自己的文件夹,这个文件夹的名称与用户名一致
- mnt:挂载点,临时安装的挂载
- root:超级管理员的目录
- snap:全新的管理软件包的方式
- tmp:临时文件
网络命令:
- hostname
hostname 没有选项,显示主机名字
hostname –d 显示机器所属域名
hostname –f 显示完整的主机名和域名
hostname –i 显示当前机器的 ip 地址
ping 确认网络连接是畅通的&查看连接的速度信息。
ifconfig:显示当前网络设备配置
iwconfig:查看设置基本的 Wi-Fi 网络信息
nslookup:ip->hostname;hostname->ip
traceroute:查看数据包在提交到远程系统或网站时候所经过的路由器的 IP 地址、跳数和响应时间。
telnet:连接目标主机
telnet hostname port – 使用指定的端口 telnet 主机名,测试主机是否在线或者网络是否正常。
- ethtool
ethtool 允许你查看和更改网卡的许多设置(不包括 Wi-Fi 网卡)。你可以管理许多高级设置,包括 tx/rx、校验及网络唤醒功能。下面是一些你可能感兴趣的基本命令:
ethtool -i 显示一个特定网卡的驱动信息,检查软件兼容性时尤其有用
ethtool -p 启动一个适配器的指定行为,比如让适配器的 LED 灯闪烁,以帮助你在多个适配器或接口中标识接口名称
ethtool -s 显示网络统计信息
ethtool speed <10|100|1000> 设置适配器的连接速度,单位是 Mbps
- netstat
发现主机连接,你可以使用”netstat -g”查询该主机订阅的所有多播组(网络)
netstat -nap | grep port 将会显示使用该端口的应用程序的进程 id
netstat -a or netstat –all 将会显示包括 TCP 和 UDP 的所有连接
netstat –tcp or netstat –t 将会显示 TCP 连接
netstat –udp or netstat –u 将会显示 UDP 连接
netstat -g 将会显示该主机订阅的所有多播网络。
电脑B连接电脑A的虚拟机
※ 以centos6.5为例(具体命令在不同版本有所不同)
(1)虚拟机配置为桥接模式
(2)vi /etc/sysconfig/network-scripts/ifcfg-eth0
配置为静态IP:
BOOTPROTO=”static”
IPADDR=192.168.1.80(电脑A的ip为192.168.1.42,于是我配置为192.168.1.80,将其配在同一网段)
GATEWAY=”192.168.1.1”
NETMASK=”255.255.255.0”