介绍Linux 基础与相关配置
Linux常用命令
-
mkdir
创建目录 -
cd
切换目录 -
rm -rf
删除目录以及子目录 -
mkdir
创建目录 -
touch
创建文件 -
ls
查看文件列表,ll
查看列表与权限 -
pwd
查看当前路径 -
tar -cvf xxx.tar xxx/
tar包打包还有一个压缩命令tar -zcvf
-
tar -xvf xxx.tar -C /xxx/xxx
tar包解压还有一个压缩命令tar -zxvf
-
tcpdump
查看tcp抓包tcpdump -i eth0 -w ./target.cap
-
ps -ef|grep java
查看java进程信息 -
ifconfig
查看IP信息 -
./install.sh
当前目录执行sh脚本 -
wget
下载网络数据 -
cat /proc/cpuinfo
查看CPU -
top
查看进程信息与内存信息 -
free -m
内存容量, -buffers +cached。free -h
centos available:真正剩余的可被程序应用的内存数 -
df -h
查看硬盘容量 -
du -sh * | sort -n
查看目录占用容量 -
ssh -p222 root@192.168.1.3
ssh登录其他服务器 -v查看详情,目标服务器需要允许外部ssh登录hosts.allow -
mv ./* ../
移动当前目录下的所有文件到上级目录 -
curl -H "Content-Type: application/json" -X POST --data '{"id":1}' http://www.infotech.vip/user
POST范围URL -
chown -R user:usergroup *
更改目录与子目录所有者 -
chmod -R 766 目录
修改目录权限,755
。rwx = 4 + 2 + 1 = 7 (可读写运行),rw = 4 + 2 = 6 (可读写不可运行),rx = 4 +1 = 5 (可读可运行不可写) -
netstat -tunlp
查看本机监听,-t:tcp,-u:udp,-n:数字表示,-a:全部,-l:监听服务,-p:进程名 -
whereis mysql
which mysqld
rpm -qa |grep mysql
rpm -ql mysql-libs....
rpm -qal |grep mysql
find / -name mysql
ps -ef|grep mysql
查找程序 -
tail -1000 xxx.txt > 2.txt
tail -3000 catalina.out |grep Error > 3.txt
查看文件另存为tail -10000 catalina.out | grep error
最后1万行查询错误tail -f xx
-
rz
sz xxx.txt
上传下载 -
find / -name "*.out"
find . -name "*.out"
查找所有.out结尾的文件 查找当前目录.out文件 -
ls -l|grep "^-"| wc -l
查看当前目录文件个数,”^-“代表文件,wc -l统计行数,或者find . -type f -print | wc -l
-
history
查看历史操作命令 -
killall mongod
kill进程 -
less xxx.txt
查看文件内容q
退出 -
sed -n '$=' /etc/sysctl.conf
cat /etc/sysctl.conf | wc -l
查看文件行数 -
df -i
查看inode数与使用率 -
for i in /*; do echo $i; find $i | wc -l; done
查询下一级级目录inode数,可以一级一级排查,找出占用大的目录 -
lsb_release -a
uname -r
查看版本信息 -
ab -c 10 -n 100 http://www.baidu.com/
-c 10表示并发用户数为10 - n100表示每个用户请求数为100。安装命令:yum -y install httpd-tools -
date -s "2020-06-07 14:14:00"
修改系统时间;clock -w
系统时间写到服务器时钟 -
vi xxx
编辑文件,内部命令:/xxx
搜索n
下一条N
上一条,:q!
强制退出,:wq
保存退出,gg
第一行,shift+G
最后一行,dd
删除一行,a
录入,Esc
退回命令模式 -
sftp(ftp) abc@192.169.1.2
跨服务器文件传输支持centos系统用户作为ftp用户,put 本地文件的地址 服务器上文件存储的位置
-
ftp
→open 192.168.1.2 288
通过ftp登录目标ftp服务器,dir
:查看目录 -
scp -P 288 /home/test/ss.txt root@192.168.33.113:/home
复制文件到目标服务器指定目录,-r
代表复制子目录文件 -
ss -ant |grep 80
Socket Statistics t:tcp a:all -
nohup xxx &
nohup 加在一个命令的最前面,表示不挂断的运行命令(退出账号/关闭终端还能继续运行),输出都将附加到当前目录的 nohup.out 文件中,&加载一个命令的最后面,表示这个命令放在后台执行,ps 和 jobs查看后台运行进程。 -
umask -S [权限掩码]
umask
命令指定在建立文件时预设的权限掩码,获取当前权限掩码,umask的分数是”该默认值777需要减去的权限”,一般是022(同组或者其他组都没有写权限) -
find / -name openssh
按文件名查找 -
crontab -e
编辑定时任务
Linux命令一张图
Linux存储系统
存储一张图
注意事项
- 不能给目录随便分配权限,比如给
/
根目录下所有文件777权限会导致很多功能不可用
常用命令详解
CURL
发送HTTP GET请求 带中文处理。需要把中文进行urlencode放入参数中,可以找一个在线工具操作。 -d 表示编码,-G 表示get请求
1 | curl -G -d code=a123 -d name=%e7%a6%8f%e5%b7%9e http://www.infotech.vip |
目录说明
/bin
存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里/etc
存放系统管理和配置文件/home
存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示/opt
用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software,装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。java、tomcat等也可以安装在opt目录下/usr
可以理解为C:/Windows/用于存放系统应用程序,/usr/lib
理解为C:/Windows/System32,/usr/local
本地系统管理员软件安装目录(安装系统级的应用),可以理解为C:/Progrem Files/用户自己编译的软件默认会安装到这个目录下。 这里主要存放那些手动安装的软件,即不是通过“yum”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面。自动化的安装程序通常要到/usr或/usr/local目录下寻找所依赖的文件/usr/src
系统级的源码目录/usr/local/src
用户级的源码目录/usr/local/bin
本地增加的命令/usr/local/lib
本地增加的库/usr/doc
Linux文档/usr/bin
应用程序/usr/sbin
超级用户管理程序/dev
存放设备文件/mnt
系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统/boot
系统引导时使用的各种文件/lib
存放跟文件系统中的程序运行所需要的共享库及内核模块/tmp
用于存放各种临时文件,是公用的临时文件存储点/var
用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件/var/log
系统日志
文件访问权限通过用户组实现,一个用户可以属于多个用户组。
NTP服务配置|NTP版本升级
主要配置文件
/etc/ntp.conf
NTP主要配置文件
查看NTPD版本号
执行命令
1 | ntpd -v |
打开防火墙
1 | iptables -I INPUT -p udp -m udp --sport 123 -j ACCEPT |
NTP安全加固
1. 确认环境
RedHat6.5 Ver. 4.2.8p9升级到 ntp-4.2.8p12.tar
2. 安装依赖包
1 | yum -y install gcc libcap libcap-devel glibc-devel |
3. 升级Ntp
1 | tar zxvf ntp-4.2.8p12.tar.gz |
4. 查看版本号
1 | ntpd --version |
查看文件校验值
- md5值:
1 | windows : certutil -hashfile filename MD5 |
- SHA1值:
1
2
3windows:certutil -hashfile filename SHA1
Linux : sha1sum filename - SHA256值:
1
2
3windows :certutil -hashfile filename SHA256
Linux:sha256sum filename
shell脚本
$0
$加数字可以获取传入的参数值$HA_ST
$加字符,获取环境变量的值,echo $HA_ST
Linux 网卡配置
网卡配置
1 | vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
配置IP,网关,DNS1,自动启动。是通过MAC与网卡绑定的。
1 | DEVICE=eth0 |
多网卡同IP地址段配置-比如交换机主备
一般情况下不要把多个网卡的IP地址设置成同一个地址段。还可能出现数据只路由到一个网口的情况。linux系统网卡自动路由的问题,比如拔掉一个口的网线会出现网络不通,系统不懂自动切换到另一个口。如果通过命令把这个口ifdown 掉就可以正常了,系统会删除掉这个口的路由。
1 | arp -a # 查看ARP缓存中所有项目的选项 |
如果想吧多个网口弄成热备,或者其他模式可以通过insmod bonding
实现提供了6种模式。mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换必须做特殊配置。mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,做bonding的这两块网卡使用不同的MAC地址。mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,只有一块网卡工作,另一块做备份。
1 | 1.创建bond0文件 |
配置默认DNS
1 | vi /etc/resolv.conf |
添加:
1 | nameserver 114.114.114.114 |
HOST本地地址解析,主机名IP地址
1 | vi /etc/hosts |
添加:
1 | 14.215.177.38 www.baidu.com |
查看进程与关闭进程
查看端口占用情况命令
netstat -anp | grep 8080
根据进程id(12345),或者进程名查询进程详情
1
2ps -ef | grep 12345
ps -ef | grep tomcat关闭进程
kill -9 12345
网络查看
- 查看端口占用情况命令
netstat -anp
。对于监听(State LISTEN)指定端口中 Foreign Address 中的0.0.0.0:*
代表任意IP对应的端口都是可以接入的。Local Address 中的0.0.0.0
代表监听本地所有IP地址,并且修改IP不受影响,IP是127.0.0.1
表示只监听回环地址,只能本机访问,x.x.x.x:ip
只监听指定ip。:::*
是ipv6的规则 - 开放端口检测:
lsof -i:3306
,lsof -i TCP| fgrep LISTEN
- tcp/ip的范围从0到65535。其中公认端口1023以下的端口,查看
cat /etc/services
- 有出现过127.0.0.1无法访问使用主机名找固定ip可以访问本机程序(数据库)的情况,比较奇怪能拿访问到ipv4与ipv6的问题也可能是系统配置问题
分区工具
Gparted、fdisk、gdisk、parted
守护进程
nohup
nohup
不挂断运行&
在后台运行,如果在脚本中就会直接返回不等待程序启动完成,异步- 例子:
nohup ./program &
Supervisor
守护进程工具,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起
查看系统信息
查看内存
1 | [root@node1 ~]# free |
free
命令查看。对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收
可用内存=系统free memory+buffers+cached=143112+13316+4642096=4798524
其他
服务管理两种方式service和systemctl
复制文件夹修改权限
1 | cp -r v1.72 test |
授权
1 | cat /etc/group # 查看所有用户组 |
设置快捷方式,可以直接启动
通过软连接
1 | ln -s /usr/local/a/bin/b /usr/bin/b |
添加PATH环境变量
vi /etc/profile
在最后添加:
1 | PATH=/usr/local/a/bin:$PATH |
保存退出,执行source /etc/profile
配置错误可能导致命令不可用比如
-bash: vi: 未找到命令
。通过执行export PATH=/usr/bin:/usr/sbin:/bin:/sbin
临时修复,重新修改环境变量文件
安装软件注意事项
需要先安装相关的依赖包,特别是源码安装需要安装gcc等依赖包。依赖包可以yum安装或者rpm包安装也可以源码安装
防火墙配置
命令:
1 | 保存,修改后需要执行的命令 |
配置 vi /etc/sysconfig/iptables
直接添加相关规则:
1 | *filter |
配置项目说明
1 | -p protoco # 协议 |
安全配置
关闭root用户SSH登录PermitRootLogin
- 新建一个用户用于SSH登录授权相关权限
vi /etc/ssh/sshd_config
把PermitRootLogin
值从yes改成noservice sshd restart
故障修复
磁盘故障修复
通过Linux启动U盘
- 在即将进入启动系统页面按键盘出现菜单,选择rescue
- 按提示选择
fsck -y /dev/ada1
用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查reboot
无启动盘
- 启动系统,按任意键进入grub
- 选择Linux,按
e
进入编辑页面 - 选择kernel行,按
e
进入编辑页 - 在kernel行的最后加上
init=/bin/bash
,按回车键(Enter),然后按“b”进行重新引导 - 引导系统会得到一个bash shell,但进入的系统是read-only的,需使用fsck检查系统
fsck -a /dev/hda1
- 将系统挂载成read-write的:mount / -o remount,rw
- 其他操作
- 系统重新挂载,重启: mount / -o remount,ro
单用户模式修改root密码
- 启动系统,按任意键进入grub
- 选择Linux,按
e
进入编辑页面 - 选择kernel行,按
e
进入编辑页 - 在kernel行的最后加上
single
,按回车键(Enter),然后按“b”进行重新引导 - 输入
passwd
修改root密码 reboot
开机自启动
1 | chkconfig --list |grep vsftpd |
chkconfig的级别:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Windows(图形界面)支持的多用户模式
6:重新引导系统,即重启
开机不重启:
1 | chkconfig vsftpd off |
server 0:off 1:off 2:off 3:off 4:off 5:off 6:off
上面的输出0~6都off时表示 没有开机自启动
开启自启动:
1 | chkconfig vsftpd on |
其它相关命令:
添加开机自启动服务:chkconfig –add vsftpd
添加自定义服务
在/etc/init.d/目录下新建一个自定义服务的文件如:test
vi test
添加下面两句到#!/bin/bash
之后。1
2chkconfig: 2345 90 10
description: test ....chkconfig --add test
chkconfig test on
off 开启关闭,永久生效如果不生效update-rc.d 命名设置开机自启动,95是脚本启动的顺序号
1
2cd /etc/init.d
sudo update-rc.d test defaults 95update-rc.d 卸载启动脚本的方法
1
2cd /etc/init.d
sudo update-rc.d -f test remove
升级
ssh升级
避免升级后执行ssh服务重启,服务无法正常启动导致ssh断开链接。可以先临时打开telnet服务或者VNC服务备用。如果在脚本里面执行可能导致ssh关闭脚本无法执行完,可以在重启命令(nohup service sshd restart &
)或者脚本上加后台执行重启命令,比较奇怪,正常脚本已经是在服务器上了具体原因还得再查。
开发注意事项
- linux(
\n
),windows(\r\n
),mac(\r
) 换行符的区别。\n
十六进制为0x0A
,\r
十六进制为0x0D
- 路径问题 根据情况尽量使用全路径,比如想打印日志,在编写脚本的时候,可能你的脚本是给其他程序调用的,可能其他程序运行脚本的当前路径跟你预期的不一致导致日志打印到了其他目录。当然对于比较熟悉linux系统的也是可以根据具体情况使用现对路径的,主要是要注意路径可能导致的问题。特别是在配置文件里面配置信息路径使用相对路径,当前的相对的路径不是配置文件那级目录,而是启动程序的路径。
- Licence功能实现,一般可以取CPU、网卡等信息进行验证,最好是通过硬件U盾进行验证。
扩展
- .tar.gz与.zip文件的区别
- .tar.gz文件一般用于Linux系统上,而.zip文件一般流行于Windows系统上
- .tar.gz格式的文件比.zip文件要小很多
- linux各种东西都是文件,所以还可以通过删除文件释放内存。
bash: /bin/rm
: 参数列表过长 ,使用find . -name "*"|xargs rm -rf "*"
命令删除当前目录下文件
TELNET
开启Telnet
rpm -qa | grep telnet
vi /etc/xinetd.d/telnet
disable = no
将disable改为nomv /etc/securetty /etc/securetty.bak
service xinetd restart
- 客户端,
telnet xxx.xxx.xxx.xxx 23
关闭Telnet
vi /etc/xinetd.d/telnet
disable = yes
将disable改为yesmv /etc/securetty.bak /etc/securetty
service xinetd restart