linux补充命令
- reboot重启
- halt 关机
- ps命令(查看当前进程)ps -ef| grep ssh(查看ssh的相关进程)
- chown命令 chown [-R] 账号名称 文件/目录(R表示递归)
- chmod r读写权4 w写入权2 执行权1
- chmod 777 -R xxx(文件或者目录)(用户,组,其他可读可写可执行)
- ps查看进程
- jps查看java进程
- set命令查看环境变量
- history 查看历史命令
- yum provides “*/命令” 查看命令属于哪个安装包
- tail -n50 文件名 (查看后50行)
- kill -9 端口号(杀死进程
新建linux虚拟机初始化设置
- 1.设置网络:
vi /etc/sysconfig/network-script/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
网管
ip - 2.关闭防火墙:
#service iptables stop
#chkconfig iptables off
#vi /etc/sysconfig/selinux
SELINUX=disabled - 3.查看主机名:
hostname - 4.修改主机名称:
#vi /etc/sysconfig/network
HOSTNAME=主机名称 - 5.修改主机名ip地址映射
#vi /etc/hosts
master 192.168.65.110 - 6.windows本地连接Linux IP地址映射
编辑C:\Windows\System32\drivers\etc\hosts
master 192.168.65.110
虚拟机的copy
- 选择完全copy
- 更改一些设置
- 右键虚拟机>设置>网络适配器>高级>MAC地址重新生成
- 在命令行切换到root用户,vi /etc/sysconfig/network 修改主机名
- 删除mac配置文件,下次开机会自动生成(根据第一步重新生成的)rm -rf /etc/udev/rules.d/70-persistent-net.rules
- 修改ip地址,不过我的copy后最后一位一个是133,一个是134,不需要修改
- 如果修改
- 先vi /etc/sysconfig/neywork-scripts/ifcfg-eth0
- 删除HWADDR这一行(命令dd)
- 修改ip地址
ssh安全外壳协议
- 非对称加密,有一对秘钥
- 公钥加密
- 私密解密
- 加密过程(前提服务端已经生成好了公钥和私钥)
- 客户端想远程登录服务端
- 客户端向服务端发起ssh请求
- 服务端收到请求,发送公钥给客户端
- 客户端输入用户名密码通过公钥加密,回传给服务端
- 服务端通过私钥解密得到用户名密码和本地进行对比,验证成功允许登录,否则再次验证
- 基于密匙的登录过程
- 在客户端生成公钥复制到服务端的专门存放公钥的地方
- 客户端向服务端发送请求
- 服务端查看自己的公钥列表,找到相同的,用此段公钥随机加密一个字符串并返回
- 客户端接收到服务端加密的字符串,通过私钥解密,然后将解密后的字符串进行返回
- 服务端接收返回的字符串并与自己生成的对比,如果一样则登录成功
- 集体操作过程
- 使用ssh-keygen -t rsa命令生成ssh公钥和私钥在/root/.ssh文件下
- 使用命令shh-copy-id 192.168.48.134复制到服务器的/root/.ssh/authorized_keys
- 发送链接请求ssh root@192.168.48.134
- 链接成功exit退出
文件上传下载
SFTP安全文件传送协议
- xshell进入sftp(sftp root@192.168.48.133)
- lcd是可以不加目录然后它会弹出一个窗口让你选目录,自己写可能会报错
- get是从服务端下载,put是上传
lrzsz(一款在linux中替代sftp的程序)
- rz命令上传也可以直接拖拽
- sz命令下载到download
查找命令
- grep
- ps -ef | grep sshd查看带有sshd的文件
- cat查看内容
- cat aaa.txt | grep ^u查看以u开头的
- cat aaa.txt | grep ^[^u]查看不以u开头的
- find
- find . -name “.log” -ls (在当前目录下显示名字所有名字是log结尾的)
- find . -type f -name “.log”(查找当前目录,以.log结尾的普通文件)
- locate
- locate是系统创建的记录文件的数据库,一天一更新
- 手动更新updatedb
- 例子:loacte /etc/sh查看/etc文件下带有sh的文件locate pwd在全系统查找带pwd的文件
- whereis
- whereis ls将和ls文件相关的文件都查找出来
- which
- 在path变量的指定的路径中,搜索某个系统命令的位置如:which java
- 查看某个系统命令是否存在
挂载命令(mount)
- 将一个设备挂接到一个已经存在的目录上
- 命令格式:mount -o loop /dev/cdrom /mnt/cdrom(例子)
本地yum源的制作
- 目录 /etc/yum.repos.d 下配置xx.repo 后缀文件
系统服务管理
- service –status-all #查看系统所有的后台服务进程
- service sshd status #查看指定的后台服务进程的状态
- service sshd stop
- service sshd start
- service sshd restart
- 配置后台服务进程的开机自启
- chkonfig httpd on ##让httpd服务开机自启
- chkonfig httpd off ##让httpd服务开机不自启
网络管理
- 主机名配置
- hostname 查看主机名
- vi /etc/sysconfig/network 修改主机名
- ip地址配置
- vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件的网络配置文件
- service network restart
- reboot
- 域名映射
- 配置在/etc/hosts文件中
- vi /etc/hosts 进行修改
- 网络端口监听
- netstat -nlpt(最常用命令)
crontab配置(周期执行指令)
- crontab -e 若不指定用户,则表示编辑当前用户的crontab文件
- crontab -l 显示某个用户的crontab文件内容
- crontab -r 删除定时任务
- 实例:(* /1 * * * date>>root/date.txt 每分钟执行一次date命令存到date.txt中*)
linux定时任务
- at
- 默认删除键变^H,只要按住ctrl键,删除键就可以使用了
at $:17
at cmd
- crontab 周期性执行计划任务
- -e指定计划任务
- -l列出计划任务
- -r删除计划任务
shell编程
- shell编程格式在/etc/shells文件下
- 使用/bin/bash 最常用,免费
- 在新建的.sh文件
#!/bin/bsah
echo "hello world"
- 添加可执行权限chmod +x hello.sh
- 执行 ./hello.sh
shell相关命令
- 比较大小
- [ a−eq a − e q b ]; echo ?( ? ( a和$b的前后要加空格,eq代表=的话输出0,不然为1,127代表输入错误)
- -ne不等于则为真返回0,不然返回1
- -gt大于
- -ge大于等于
- -lt小于
- -le小于等于
- 内置测试判断
- [ -e /etc/passwd ];echo $?(前后要有空格,echo后面要有空格,如果文件存在返回0)
- -r 如果文件存在且可执行则为真
- -w 如果文件存在且可读则为真
- -x 如果文件存在且可执行则为真
- echo命令
- -n表示输出不换行
- -e表示转义
- echo中默认是输出换行的
- shell中的预设变量
- $0表示这个程序的执行名字
- $?表示上一个指令的返回值
- $#表示这个程式的参数个数
- let命令用来指定算数运算
let "a++"
- ctrl + d退出
- read命令(从键盘读取变量的值)
- 选项-p:指定读取值时的提示符
- 选项-t:指定读取时等待的时间
read -p "please input the first" a
shell中的括号
- 双括号中前面和后面都要加空格
- shell脚本中执行命令可以放在
中
- 双括号
- 省去$符号的算数运算
- 可以使用a++,b–之类的
- 在双括号结构中,所有变量可以不加入$符号前缀,也可以加入.
- 支持多个表达式运算,各个表达式之间用逗号,分开.
- 使用[]时必须保证运算符与数值之间有空格,而(())时数值与运算符可以没有空格
#! /bin/bash
num=2
while ((num<100)) #数值与运算符可以没有空格,变量的使用时也可以不使用$num
do
echo "$num"
((num=num*2))
done
- 单括号
- 命令组。括号中的命令将会新开一个子shell顺序执行
- 命令替换(没搞懂)
- 用于初始化数组。 如:array=(a b c d)
- 中括号
- 中括号前后两端必须加空格
- wojiufanle
控制语句
- 控制语句中的关键字如if,then,while,for,elif如果要与后面的中括号或小括号之间隔一个空格
- while
- (())中可以不加$也可以加
#!/bin/bash
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done
#!/bin/bash
int=1
while(( int<=5 ))
do
echo $int
let "int++"
done
- while循环可以用于读取键盘信息
echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名: '
while read FILM
do
echo "是的!$FILM 是一个好网站"
done
- if
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
- case
#!/bin/bash
read -p "please input [y|n]" i
case $i in
"y")
echo "yes"
;;
"n")
echo "no"
;;
"*")
echo "y or n!"
esac
shell中单双引号的区别
- 单引号是原样输出
- 双引号的取值输出
Shell函数
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"