Linux常见命令
一.虚拟机安装
1.安装环境
选择VMWare-->更改虚拟机安装位置-->预留至少30G的内存空间
2.安装虚拟机
1.安装
选择centos64位操作系统进行安装-->设置主机名称-->设置密码-->配置虚拟机:ifconfig查看网络信息,ping www.baidu.com 是否能访问外网
2.配置网络信息
(1).命令:cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
(2)按下"i"进入编辑模式
(3)进行修改IP地址,子掩码等等
DEVICE=eth0 TYPE=Ethernet ONBOOT=yes -->虚拟机/服务器启动的时候默认加载配置网络信息 BOOTPROTO=static -->静态设置网络信息;dhcp:动态获取网络信息 IPADDR=192.168.31.200-->设置当前机器在网络中的标识 NETMASK=255.255.255.0-->子网掩码;计算网关 GATEWAY=192.168.31.2-->默认网关 DNS1=114.114.114.114-->域名与IP地址的绑定
(4)删除原先生成的文件:rm -rf /etc/udev/rules.d/70-persistent-net.rule(该文件每次重新启动时会自动创建)
(5)重启网卡服务:service network restart
(6)防火墙
a.本次关闭:service iptables stop
b.查看防火墙状态:service iptables status
c.取消自动启动:chkconfig iptables off
(7)软件安装检测:执行该命令 vi /etc/selinux/config 进入文件之后将SELINUX修改为SELINUX=disabled
(8)快照应用:
a.作用:保存当前虚拟机的状态
b.拍摄快照必须关闭虚拟机
(9)克隆
a.作用:利用当前的状态制造出更多的虚拟机
b.修改相关数据:
修改地址vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改主机名vi /etc/sysconfig/network
删除IP与网卡绑定文件rm -rf /etc/udev/rules.d/70-persistent-net.rule
重启reboot
二.文件系统
1.文件夹的介绍
bin存放可执行的二进制文件
boot引导分区
dev设备信息
etc配置文件
home家目录 当前登录用户的地址
lib和lib64系统运行所需要的类库
lost+found当系统异常关闭的时候,保存的异常日志
media 多谋体
mnt可以挂载的存储设备
opt类似于program file软件安装目录
proc当前正在运行的进程(服务)
root超级用户家目录
sbin可执行文件
selinux安全
sys系统相关
tmp临时文件目录,当关闭计算机时目录数据回被清空
usr用户目录 一般用于yum安装软件
var变量
2.linux中的特殊符号
/根目录:
相对路径 vi ../etc/sysconfig/network
绝对路径 vi /etc/sysconfig/network
./当前目录
../上级目录
ll -a 查看当前路径下所有文件
~ 当前用户的家目录
cd 后面不加任何路径,跳转到家目录
$ 变量
3.文件中的相关命令
cd 切换文件目录
mkdir 创建目录
mkdir -p /a/b/c/d 在a目录下的b目录中的c目录里创建d目录
rmdir 只能删除目录并且是空目录
拷贝文件夹cp 源路径 目标路径
若不是空目录则用 cp -r 源路径 目标路径
剪切/移动 mv mv ~/install.log /opt
修改名字 mv 旧的文件夹名称 新的文件夹名称
删除文件和文件夹 rm -rf文件夹路径
查找目标文件 find 目标路径 -name 文件的名字
touch 如果存在这个文件,将三个时间修改为当前时间;如果不存在这个文件,创建新的
链接 类似于window的快捷方式
stat 查看文件状态 stat+文件名称
a.符号链接(软链接)
ln -s file01 sl01
ln -s /root/file01 sl02
软连接的inode和文件的inode不一样,是两个独立的文件
软连接的时候尽量使用绝对路径,防止链接文件夹拷贝时链接失效
b.硬链接
ln file02 hl01
硬链接的inode和文件的inode值一样,说明其实是一个文件
4.查看文件内容
cat 查看文档内容
more--less
分页查看文档内容 回车 下一行;空格 下一页;h 帮助;b 上一页;q 退出
head-数字 文件名称 从该文件头读取N行
tail-数字 文件名称 从该文件尾读取N行
5.vi编辑器
a.打开文件 vi+文件名 vi +数字 profile 打开之后光标停在该数字对应的行首
b.三种模式的转换
编辑模式--》输入模式
i 在当前字符位置前面插入数据
insert 插入
a 在当前字符位置后面追加数据 append追加
在下一行输入数据
打开一个空行 I 行首 A 行尾 O 上一行
输入模式--》编辑模式
按下 ESC即可
编辑模式--》末行模式
按下冒号 :
末行模式--》编辑模式
按下ESC即可
编辑模式的常见命令
w 调到下一个单词
^ 直接跳到行首
$直接跳到行尾
dw 删除一个单词或者特殊字符
dd 删除一行
3dd删除三行
u回滚
.回滚u的操作
yw复制一个单词
yy复制一行
3yw
p粘贴
3p 粘贴3行
r替换一个字符
3r 替换3个字符
x剪切
3x剪切3个
hjkl 左下上右
gg调到第一行
7gg 跳转到第7行
G最后一行
ZZ 保存退出
末行模式
w---保存
q---退出
wq--保存并退出
!--强制
nu
文档匹配
/if 搜索if
:s/for/fff/ 将光标所在行的第一个for换成fff
:s/for/fff/g 将光标所在行的所有for换成fff
:5s/for/fff/g 将第5行的for换成fff
:4,5s/for/fff/ 将第4行至第7行的for换成fff
g/hhh/s//www/g 将文中所有的hhh换成www
c.安装vim:yum install vim -y
6.文件的拷贝
a.linux和linux之间:scp 源文件 目标地址(用户@IP:文件目录)
scp ~/sxt root@192.168.31.201:~/
b.linux与window 安装组件 lrzsz
c.known_hosts
当一台主机与另外一台主机创建连接的时候,会在root目录下创建一个.ssh文件夹
文件夹下自动生成一个known_hosts的文件
这个文件存放了建立连接的主机地址信息
如果是第一次建立连接,需要输入yes确认
如果第二次连接,因为known_hosts这个文件中已经存放了主机地址,那么就不需要输入yes了
7.分区信息
df 查看分区的使用情况 df -m df -h(更直观,更简洁)
8.网络系统
1.ifconfig
查看当前网络相关信息
eth0
网卡1的网络配置
lo
环网的网络配置
ping
查看与目标主机是否连通
dns域名解析
192.168.1.120
window
C:\Windows\System32\drivers\etc\hosts
Linux
vi /etc/hosts
2.netstat
当前网络信息
netstat -anp
netstat -r 核心路由表
3.telnet
查看与目标主机的端口是否能够连通
yum install telnet -y
telnet 192.168.31.201 6789
连接不同说明对方防火墙屏蔽或者没有监听
telnet 192.168.31.201 22
退出按下 ctrl+]
输入quit 退出
http请求
curl -X GET http://www.baidu.com/
9.免密钥登录
为了远程登录和拷贝文件,其他程序可以控制我的电脑更加方便,所以需要免秘钥
远程登录
ssh 192.168.31.201
秘钥的分类
对称加密算法 :加密和解密使用相同的秘钥(AES DES)
原文 我喜欢你
加密后 U2FsdGVkX18AVEi36COkz94Mbr/2cFAFgnm8pLiZ4q4=
解密 我喜欢你
非对称加密算法 (RSA)
加密和解密的秘钥不一样
加密的秘钥称之为 公钥,解密的秘钥称之为私钥 ,公钥和私钥成对出现
加密前首先求出公钥和私钥
-
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC56tcVRzoS6fsnGpcvN4kD2ibY
8I99Wut1eEOHrJDgtCGa+cus3LjXWBHi/BTziuTdzaE+ekNcmLO1y54Rtv4VZ+5k
DDPRhp30u0CWnQhRQcChTUFcaeve1UNVrVp0j+xUZWY1Ndqb+K+btQS9aIBJHOQD
B0u9CJWP9RZZcjIRYQIDAQAB
-----END PUBLIC KEY-----
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQInKuXto6twRUCAggA
MBQGCCqGSIb3DQMHBAjKJESHtPWfSASCAoDvBi4aU8HFdTqfyy3ItbGSGjexA8un
T4fg4fWgWdm6KJWg0l2bap1wagfjeEKdznKDNFqrveK5SSsozPx5Nnr/9IblSCiA
yF0NA1aYI3Bzi2Coy5Br+mq+BxpfmW0qoqKznhKcbW+SK3mPVPCTwD59Mnq9ufqG
oxNkPnSycKEfoy4iZXEpkXH/Gkqp4HZMGrKVZUN7RY3CEDJNjqKrAgVo4ODiBCZ+
HOSgLZe8yTEANeZxApUGA92rOjWSVgecaNgG0Jz/uIWUmqdnv0xYBNnBCk9tcl1G
K+u9UL2YzeCML/mMGnEMSoNc11DV/AuCno9c8EtgG8r0ao3I7liDmthhvexaC6dq
lySEnLztBeL4kgll9pLqaE323gNfB/LMV0zuUa/o4MKVLswupflwUvJvJOG8zejs
X1mAoBY1j96k++ikXHd5+/uWKW5KybzUMNNS4GIPoDRYQaifLlNt0S9NnvtYaxjP
Ib74CF0L5HfAGuU4FjnlBJj/ajdNY27tGVJiHe0oL2kfEaNnenZYA/gwZ/rnq4wF
jMijB7SbU0lUFVLVzNfdGVrbo1+KhQ/AU/ZUPxUy6mK9wDbd3aHTDYbnbeWoGIB9
YzQBRFAwMtk66NF15rI0/jsIzlAf1tcmHae7WEeqMNbwGEZD0hGYPsmHYxAC/tob
BKhlGtr6SjrjnwZmZkNXsmlJcZhcYJQQWRTzQAJ6y1u/bCGnZ2T5IaqLagQ7GPzY
X/zoQ9Rtw55ZiVQB7r/y9W/dqwQrDDPkspjQoJM2Ayjv4SfCEaItNG/0AGdHKA1G
mkWU4+JhKM9zx7QRzuXMImUmvtYyrS23S8h9lUV+P9fAFX5NHF2o1FrK
-----END ENCRYPTED PRIVATE KEY----- -
原文:我喜欢你
公钥加密:
U71Pt4qXUro+NQ2TIUbqdVVX/YAGXTpdGJYnC+ypoAgAX5RRSVMmbXL36voxIWFb6ryONSA9DKSy8Cg+y01l0pvCO5zbwaCxBpflQ5MJOIAJ3fTgbxx8Dxk0duK5pv/2eT1ePQTHMxMeWHNAtOYSBySLj3kGPQegwkUWx+NWQls=
私钥解密:我喜欢你
不可逆加密算法
将密码加密后编程一个新的数据,但是这个过程不可逆
7+8=15
6+9=15
15=?+?
15=?+?+?+...+?
开始进行免秘钥
生成自己的秘钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
将自己的公钥发送给要免秘钥的主机的.ssh/authorized_keys文件中
ssh-copy-id root@192.168.31.201 ~/.ssh/id_rsa.pub
我将自己的公钥发给你,说明我登录你是免秘钥的
为了保证免秘钥成功
known_hosts文件要有对方主机名
保证对方的authorized_keys 要有我的公钥
三,系统配置
1.日期和时间
date 查看当前系统时间
修改系统时间 date -s
服务器时间同步
安装ntp时间同步服务器
yum install ntp -y
ntpdate cn.ntp.org.cn
2.DNS解析
/etc/hosts
3.主机名
/etc/sysconfig/network
4.防火墙
service iptables stop
chkconfig iptables off
5.SELinux
/etc/selinux/config
四,用户和权限
1.用户和组
-
创建用户 useradd 用户名
用户存在的地址 /etc/passwd
-
设置密码 passwd 用户名
输入密码:例如 123456
密码存在的地址:/etc/shadow
-
修改用户 usermod -l 新的名字 旧的名字
-
创建组 groupadd sxt
-
删除组 groupdel sxt
-
修改组的名字 groupmod -n 新的名字 旧的名字
-
查看用户对应的组 geoups 用户名称
-
修改组 usermod -g 新的组名 用户名称
-
追加组 usermod -G 要追加的组名 用户 名称
-
2.系统权限
-rw-r--r--. 1 root root 1615 May 4 2010 rpc
drwxr-xr-x. 2 root root 4096 Sep 2 22:39 rpm
lrwxrwxrwx. 1 root root 14 Sep 2 22:39 redhat-release -> centos-release
前缀为"-"的代表文件
前缀为"d"的代表目录
前缀为"l"的代表的是软连接
rwx三个为一组
r:读的权限
w:写的权限
x:执行的权限
rwx一共有三组
所属用户的权限
所属用户的组
其他的权限
root root 所属的用户名为root 所属的组为root
3.权限和UGO
-bash: /usr/sbin/groupadd: Permission denied
当前用户没有执行权限
权限在超级用户的面前就是一堆废纸,没有任何约束作用
4.修改文件权限
修改用户和组 chown 用户名称 文件名称
修改组 chgrp 旧的组名 新的组名
修改UGO的权限
chmod(ugo)+/-(rwx) 文件名 适合统一添加
chmod(0-7)(0-7)(0-7) 文件名称
5.sudo
权限分配文件
/etc/sudoers文件
需要使用vi sudo命令来修改这个文件
在98行位置添加 yw ALL=(root) /usr/sbin/*
使用权限的时候 sudo useradd wby ,第一次需要输入密码
这个密码有效期为15分钟
6.进程proc
ps -ef 查看当前进程
ps -aux 查看当前用户的详细信息
top 实时查看当前linux的运行情况
kill -9 进程号 杀死进程
7.重定向
重定向就是指数据输出的方向,默认输出到控制台
输出种类: 1标准输出 2错误输出,默认的输出种类为1 标准输出
ls ~ /abcd 1>> info
ls ~ /abcd 2>> info
ls ~ /abcd >> info 2>&1
8.管道
将前面的命令得到的结果传递给后面的命令
ping www.baidu.com >> baidu
ping www.baidu.com >> baidu &
ps -ef | grep ping
jobs -l 只能查看当前终端的
后台程序不会被挂起,但是需要重定向两种输出方式
nohup ping www.baidu.com >> baidu01 2>&1 &
五.程序的安装
1.全局配置文件
文件修改地址:/etc/profile
2.软件安装
rpm -ivh 要安装的软件名称
解压tar.gz tar -zxvf 需要解压的文件名称
打包文件 tar -zcf 需要打包的文件名称
3.安装jdk
rpm -ivh jdk
配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$JAVA_HOME/bin:$PATH
注意:在profile文件下可以查看当前jdk安装路径 :cd usr/java/jdk1.7.0_67
重新加载环境变量配置文件
source /etc/profile
4.安装Tomcat
解压安装包 tar -zxvf apache-tomcat-7.0.61.tar.gz
新建安装路径 mkdir /opt/sxt
将解压后的文件移到新建安装路径下 mv apache-tomcat /opt/sxt/
切换到bin目录中 并启动服务 ./startup.sh
5.安装MySQL
安装MySQL yum install mysql-server -y
启动MySQL服务 service mysqld start
连接 mysql
查看当前的数据库 show databases;
进入数据库 use mysql;
查看数据库表user的信息 select host,user,password from user;
添加管理员账户
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
刷新权限 flush privileges;
注意:如果还是登陆不进去,请强制刷新 service mysqld restart
删除已有的用户名称和密码
delete from user where host <> '%';
注意:如果还是能免密登陆 请输入 commit;
退出 exit
重新登录 mysql -u root -p
输入密码 xxxxx
使用Navicat连接数据库
6.yum安装
就是一个基于rmp包的包管理器,他可以帮助我们从包服务器查询 安装 卸载 更新 依赖。。。一系列操作
yum search xxx
yum install xxx1, xxx2 -y
yum deplist mysql-server.x86_64
修改yum源
(1)基于网络
安装wget yum install wget -y
备份原来的ContOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载ContOS-Base.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
清除原始yum源的缓存信息 yum clean all
生成新的yum缓存 yum makecache
(2)基于本地文件
将完整版的ISO文件加入到光驱
将光盘挂载到机器上 mount /dev/cdrom /mnt/cdrom/
修改ContOS-Base.repo的名字
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.aliyun
修改ContOS-Media.repo
vi ContOS-Media.repo
baseurl=file:///mnt/cdrom/
enabled=1
清除原始yum源的缓存信息 yum clean all
生成新的yum缓存 yum makecache
六,shell编程
1.Kernel 内核
Linux-Linux
Window-NT
2.shell
Bourne Shell(sh)
Bourne Again Shell(bash)
注意:将来写脚本的时候先搞清楚系统是什么壳。然后再声明对应的壳
3.创建shell
vi sxt.sh
#!/bin/bash
4.运行脚本
(1) source sxt.sh
sh sxt.sh
可以直接执行普通文件
但是只能执行比较原始的shell命令
(2) ./sxt.sh
必须是一个可执行的文件
执行脚本的时候,新开一个子进程执行
5.变量
在shell中没有数据类型
export 可以让子进程使用父进程的变量
6.传参
echo $1
7.逻辑运算符
&&逻辑与
前后都为true,才会返回true
如果前面是false,后面的表达式将不会被执行
ls /root && ls /opt
||短路或
前后只要有一个为true,就会返回true
如果前面额表单式为true,后面的就不执行了
ls /root || ls /opt
8.流程语句--函数
首先当电源键被按下的时候,首先启动的是BIOS
BIOS会检测启动系统的方式(U盘,光驱,硬盘)
Linux会默认加载boot的文件夹引导系统启动,读取默认的配置信息
读取/etc/inittab选择当前系统的运行级别
0:halt关机
1单用户模式
2多用户模式但是没有nfs
3完全的多用户模式
4保留选项
5X11桌面系统
6reboot重启
默认级别为:3
根据级别选择对应的rc3.d
里面都是软连接,软连接链接到了init.d文件夹中的服务
所有以S开头的表示启动时要加载的服务
所有以K开头的表示关机时要杀死的服务
字母后面的数字表示顺序
然后关机rc0或者重启rc6
9.服务管理
chkconfig
检查开机关机的时候服务是否被开启或者关闭
on off (2345)
service
当前运行状态下,服务的开启和关闭
start stop restart status
将脚本添加到服务
创建一个脚本文件
#!/bin/sh
#chkconfig: 2345 88 99
#description:auto_run
ntpdate cn.ntp.org.cn >> /var/sxtlog 2>&1
修改脚本文件的权限
chmod 774 sxtntpdate.sh
将脚本文件拷贝到/etc/init.d文件夹下
将脚本加入到系统服务
chkconfig --add sxtntpdate.sh
在rcX.d中自动创建软链接
重启服务器
10.linux三剑客
grep
全面搜索正则表达式并把行打印出来
cat passwd | grep -n root
grep -n root passwd
grep -nv root passwd
grep -En [0-9]{3} passwd
grep -ni Root passwd
grep "no login" passwd
grep 74 38 passwd
grep 38 passwd --color=auto
o 选中部分 c统计行数
grep text ./ -rn
sed
https://www.cnblogs.com/chensiqiqi/p/6382080.html
Stream Editor(字符流编辑器)
文件中的每行字符都是原料,运到sed车间,然后经过一系列的加工处理
一次一行的设计使得sed软件性能很高,sed在读取非常庞大的文件时不会出现卡顿的想象。
-
对行的操作
-
10第十行
-
10,20 [10-20]
-
10,+20--->[10,10+20]
-
10,$ --->[10,最后一行]
-
1~2--->1357
-
-
增
-
操作指令为a追加和i插入
-
sed "2a shsxt" passwd
-
sed "2i shsxt" passwd
-
sed -i "2a shsxt" passwd
-
-
删
-
d
-
-
改
-
c
-
s
-
sed "1,3s/root/sxt/g" passwd
-
-
查
-
p
-
sed -n "2p" passwd
-
awk
https://www.cnblogs.com/chensiqiqi/p/6481647.html
-
awk指令是由模式,动作,或者模式和动作的组合组成。
-
模式:匹配数据
-
动作:让匹配的数据执行的操作
-
awk -F ":" 'NR>=2 && NR<=6{print NR,$1}' passwd
-
-