linux基础操作
linux常用命令
查看当前系统的时间:date
[root@localhost ~]# date +%Y-%m-%d --date="-1day" # 加减也可以 month|year
设置时间:date -s “2018-05-14 06:50:51” ## 修改时间
修改时间后,需要写入硬件bios才能在重启后依然生效。 hwclock -w
1 | [root@localhost ~]# date |
who查看有谁在线(哪些人登录到了服务器)
1.who 查看当前在线
1 | [root@localhost ~]# who |
2.在linux /var/log/wtmp 日志中以二进制的形式记录了用户登陆的时间和登陆IP,用who 命令可以查看
who /var/log/wtmp
1 | [root@hadoop /]# who /var/log/wtmp |
文件操作
1.vi 文本编辑器
1 | 基本用法 |
linux增强操作
系统管理操作
统计文件或文件夹
du -sh software/ ## 统计指定路径下所有的子目录和文件的大小
df -h 查看磁盘的剩余空间
1 | [root@localhost ~]# ll |
wc命令
Linux wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为”-“,则wc指令会从标准输入设备读取数据。
- -c或–bytes或–chars 只显示Bytes数。
- -l或–lines 只显示行数。
- -w或–words 只显示字数。
1 | [root@hadoop ~]# cat test.txt |
查看linux系统登录的ip信息:
1 | [root@hadoop ~]# who /var/log/wtmp |
进程管理
Centos7中systemctl命令详解:
LinuxSystemctl是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器。通过Systemctl –help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,systemd服务的配置重载,系统开机关机相关的命令。
1 | 系统中是否安装有systemd并确定当前安装的版本 |
SSH免密码登录配置
工作机制
传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。
而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。 SSH传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的「通道」。 了解这么多就好了,其实ssh连接也就是可以理解成经过加密的远程访问啦。
ssh的具体实现是有客户端和服务端的软件组成的。
服务端是一个守护进程sshd,它在后台运行并响应来着客户端的连接请求。
客户端包含ssh程序以及向scp(远程拷贝)、slogin(远程登录)、sftp(安全文件传输)等其他的应用程序。
认证机制
从客户端来看,SSH提供两种级别的安全验证。
账号口令验证
直接输入所要登陆的用户的口令是默认的方式。不需要修改配置文件。
如果直接从客户端将用户密码传输到服务器,那么密码信息很容易被中间人截获,从而实现重放攻击。ssh的实现方式是:
1.客户端向ssh服务器发出请求,服务器将自己的公钥返回给客户端;
2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器;
3.服务器接收到客户端传送的密码,用自己的私钥解码,如果结果正确,则同意登录,建立起连接。
这种方式还是有漏洞的,中间人可以假扮成服务器,骗取客户端的密码。
RSA加密验证
rsa加密验证方式,充分利用了非对称加密体系的优势,不需要在网络传输密码,完全杜绝了中间人攻击的可能。步骤如下:
准备工作
-1.客户端先使用 ssh-keygen 命令,生成私钥和公钥。按照默认配置,私钥会被保存在~/.ssh/id_rsa中,公钥则在~/.ssh/id_rsa.pub中。(一般别修改这里的文件)
0.客户端通过安全的方式将公钥发送给服务器。在服务器端,将客户端发的公钥写入到~/.ssh/authorized_keys文件末尾。
建立连接
1.客户端发出申请。服务器产生session密钥对,返回通过对应客户端的公钥加密后的session公钥。
2.客户端用自己的密钥解密信息,得到session公钥。
3.之后的数据交互,都通过对方方公钥加密,对方收到信息后,用其私钥解密,实现安全加密过程。
ssh免密码登录配置
1.实现效果:
有两台服务器:”192.168.17.130” 和 “192.168.17.128”
需要实现:在服务器”192.168.17.130”上实现ssh无密码连接服务器”192.168.17.128”
2.实现步骤:
1). 在”192.168.17.130”服务器上使用”ssh-keygen -t rsa”命令来创建公钥。
(会问你存放的目录,如果不需要修改,直接回车两次即可,默认保存路径为”~/.ssh/“)
ssh-keygen -t rsa -C app@163.com, 然后回车
代码参数含义: -t 指定密钥类型,默认是 rsa ,可以省略。 -C 设置注释文字,比如邮箱。
2). 再将 192.168.17.130 服务器自己的公钥拷贝并追加到 192.168.17.128 服务器的授权列表文件 authorized_keys中。
也可以直接一条命令: ssh-copy-id 192.168.17.128 (推荐用这条命令)
1 | [root@hadoop ~]# ssh-keygen |
网络管理
uname命令
1 | 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等) |
主机名配置
查看主机名:hostname
在CentOS/RHEL 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置
centos修改主机名(立即生效,重启后也永久生效): hostnamectl set-hostname hadoop,然后在/etc/hosts中添加hadoop。
注意*:修改的主机名,带有任何的特殊字符或空白字符都将会被移除,并且提供的参数中任何大写字母都会自动转化成小写
一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你需要手动更新/etc/hosts。
1 | [root@localhost ~]# hostname |
IP地址配置
临时修改IP
ifconfig eno16777736 192.168.1.101
注意(eno16777736)是默认第一个网络接口名称,网卡名字
永久修改IP
第一步:查看网络接口
ifconfig
第二步:去对应的网络接口配置文件修改配置,注意文件名称是(ifcfg-默认第一个网络接口名称),文件路径是/etc/sysconfig/network-scripts/
vim /etc/sysconfig/network-scripts/ifcfg-网络接口名称
修改以下配置
TYPE=Ethernet
BOOTPROTO=static # BOOTPROTO=dhcp表示每次关闭linux系统在重新启动之后都会重新获得新的ip地址,dhcp修改为static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=9e8d604f-d991-4aa2-88a3-4c679e6f139c
DEVICE=eno16777736
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
HWADDR=00:0c:29:ce:3f:3c #MAC地址
IPADDR=192.168.1.104 #静态IP
GATEWAY=192.168.1.2 #默认网关
NETMASK=255.255.255.0 #子网掩码
DNS1=192.168.1.2 #DNS配置
第三步:重启网络服务
service network restart
其他
1 | DEVICE=物理设备名 |
网络服务管理
linux的网卡坏了怎么办
高级文本处理命令
cut命令
cut命令可以从一个文本文件或者文本流中提取文本列
cut -d’分割字符’ -f fields ## 用于有特定分割字符
cut -c 字符区间 ## 用于有特定分割字符
选项与参数:
-d: 后面接分割字符,与 -f 一起使用;
-f :依据 -d 的分割字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符(characters) 的单位取出固定字符区间。
1 | echo $PATH | cut -d':' -f 6 #将PATH变量取出,找出第6个路径 |
示例:
1 | [root@hadoop /]# echo $PATH |
sed命令
删除行: d 命令
1 | 1.删除行: d 命令 |
新增行:a 命令
1 | 2.新增行:a 命令 |
替换行:c 命令
1 | 3.替换行:c 命令 |
替换部分字符串而不是整行:s 命令
1 | 4.替换部分字符串而不是整行:s 命令 |
搜索并输出行内容
1 | sed还提供一个p命令用于搜索符合条件的行,并输出该行的内容,而不做其他的任何修改,例如: |
将修改应用到文件中
1 | 我们之前做的所有实验,实际上都没有修改test.txt文件的内容,也就是说我们看到的修改结果仅仅输出到控制台上,而文件test.txt的内容是没有修改的,我们可以使用 -i 选项告诉sed直接修改文件的内容,而不是将修改结果输出到终端上,例如: |
sed正则中的元字符
1 | 我们知道sed中的命令前面可以使用地址范围进行限制,表示对文件的某些符合条件的行执行相应的操作,其中我们可以使用正则表达式选出要操作的行,而sed中正则的语法可能与我们其他命令的正则语法有一些不同,这里我们有必要列出sed中常用的正则元字符: |
awk命令
简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。
awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
入门实例
1 | ## 假设last -n 5的输出如下: |
##### print和printf
awk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。
实例:获取java应用的进程id
1 | [root@izuf6ajbxrke67fngx1q5nz ~]# ps aux|grep service-data |
说明: grep -v grep 的含义
1 | grep -v grep | grep -v tail |
awk编程变量和赋值
除了awk的内置变量,awk还可以自定义变量。
下面统计/etc/passwd的账户人数
1 | #awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd |
count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。
这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:
1 | #awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd |
linux上软件安装
linux系统软件安装方式
二进制发布包
软件已经针对具体平台编译打包发布,重要解压,修改配置即可。
PRM发布包
软件已经安装redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装。
Yum在线安装
软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可以用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题。(注:类似maven)
源码编译安装
软件以源码工程的形式发布,需要获取到源码工程后用相应及开发工具进行编译打包部署。
YUM方式软件安装
从网络源使用yum安装软件
yum install XXXX
使用本地yum源安装软件
yum仓库服务器本质上就是一台http服务器,服务器的目录中放置了rpm包,及rpm包的索引信息文件,即可为yum客户端提供rpm文件下载。
制作基于内网web服务器的yum源(虚拟机)
1.在一台机器上部署一个web服务器,确保web服务器运行成功。
2.将包含yum源的光盘镜像文件插入到虚拟机的光驱
3.将光驱挂载到web服务器的一个目录中
4修改yum的repo库配置文件,/etc/yum.repos.d/ 目录下,添加一个自己的配置文件。
5.接下来就可以用yum安装库中拥有的任何软件了。
yum install -y telnet
C语言软件源码编译安装-redis服务安装
1 | 用源码工程来编译安装 |
shell脚本部署java应用
在本机部署java应用
1 | [root@hadoop ~]# cat metaconf.sh |
在局域网内部署java应用
1 | [root@hadoop ~]# cat historicalData.sh |
在shell.sh脚本中修改其他文件的内容
1 | cat >>/root/test.txt<<EOF |
1 | [root@hadoop ~]# cat test.txt |