前言:
本篇记录了Liunx学习过程,基于centos。学习时已经有一点基础,所以并不全面。不过man命令可以帮助到大家。Liunx版本无需太过纠结,大同小异。
eg: man ls 查看ls相关命令如何使用。
建议有Liunx环境,或Liunx虚拟机,或在windows上安装cygwin(模拟Linux环境)。
一、Linux关闭重启注销,vi与vim编辑器
1、关机
shutdown -h now
2、重启
shutdown -r now
reboot
3、注销
logout
4、vi与vim编辑器
:set nu 加入行号
:set nonu 取消行号
:6 跳到第6行
转一篇vim使用教程
https://blog.csdn.net/weixin_38753909/article/details/98477141
5、去重复行
sort -n test.txt | uniq > text_new.txt
二、Linux目录
1、根目录
/ 下面有root home bin etc等目录
2、其它目录
/root 存放root用户相关文件
/home 存放普通用户相关文件
/bin 存放常用命令目录
/sbin 存放需要一定权限才能使用的命令
/boot 存放引导相关文件 破坏会导致系统无法启动
/etc 存放配置相关文件
/usr 软件安装默认文件夹
三、Linux用户管理
1、添加用户
useradd es
passwd es 123456 不指定用户为当前用户设密码
2、删除用户
userdel es 删除用户 不删除用户目录
userdel -r es 删除用户及目录
3、Linux运行级别
0 关机
1 单用户
2 多用户无网络
3 多用户有网络
4 系统未使用保留给用户
5 图形界面
6 系统重启
修改级别 /etc/inittab id:3:initdefault
启动时会读/etc/inittab文件 常用为3和5 设为6开机会不断重启
四、常用命令
1、ls&cd
ls -a 显示隐藏文件
ls -l 显示长列表
ls -la
ls -lt 时间降序
ls -ltr 时间升序
ls -R |awk '{print i$0}' i=`pwd`'/'
cd - 进入上回目录
ls相关
http://www.jb51.net/article/14709.htm
2、管道命令more grep
将前面的命令结果交给 | 后面的命令处理
more xxx.log 分页显示 空格下一页 Ctrl+PgUp上一页
ls /etc | more
grep -n "hadoop" hadoop.log 输出hadoop在hadoop.log中出现行号及内容
ls /etc | grep hadoop
grep -v hadoop 输出不存在hadoop的内容
3、命令帮助man
man grep
4、查找命令find
find /home -name hadoop.log 在/home目录下查找hadoop.log
find -size 100 查找大于100K的文件
5、重定向命令> >>
ls /etc > test 命令结果覆盖至test
ls /etc >> test 命令结果追加至test
program < test 从文件中输出信息
五、文件权限及用户组
用户必需在组下,用户可以在多个组下
ls -ahl 查看文件所在组(创建文件用户所在组)
ls -lt(-ltr) 按时间降(升)序
cat /etc/group 查看用户组
cat /etc/passwd 查看用户
添加组
groupadd es
cat /etc/group
es:x:503
组名:none:组ID
useradd -g es elasticsearch 向es组中添加elasticsearch用户
cat /etc/passwd
elasticsearch:x:601:503::/home/elasticsearch:/bin/bash
用户名:加密密码:用户ID:组ID::用户主目录:用户使用的shell解析器
ls -l
-rw-r--r-- 1 es elasticsearch time name
权限 文件数 用户 组 时间 文件名
- 文件类型
rw- 文件所有者对该文件的权限
r-- 文件所在组对该文件的权限
r-- 其它组对该文件的权限
r 可读 4
w 可写 2
x 可执行 1
who am i 查看当前用户
chomd 777 /home/es 修改权限
chown -R root package/ 修改文件所属用户
chgrp -R root package/ 修改文件所在组
六、外部文件的挂载和卸载
挂载磁盘
https://blog.csdn.net/weishujie000/article/details/76531924
mount /mnt/cdrom /mnt/cdrom为挂载默认目录 可挂载至其它目录
umount /mnt/cdrom 卸载
/etc/fstab文件中的uuid可以通过blkid命令查询,uuid所在列也可以直接写成磁盘分区(/dev/sdc1)
七、Linux分区
硬盘分区分为基本分区(Primary Partion)和扩展分区(Extension Partion)
PP+EP数不能大于4个 PP可直接使用 PP可以有多个 EP需要再分区才能使用
EP再分区是逻辑分区(Logical Partion) LP数量无上限
1、fdisk
fdisk -l 查看系统分区情况
/dev/sda1 /设备/分区名 硬盘分两种SCIS(sd)和IDE(hd) a表示系统中第一块硬盘 1表示分区(5开始为LP)
2、df
df /boot 查看目录属于哪个分区
分区默认是挂载在/boot下的 可以修改
umount /boot
mkdir /test
mount /dev/sda1 /test
df -l或-h 硬盘使用情况
八、shell简介
shell名 命令名
Bourne /bin/sh
C /bin/csh
Kom /bin/ksh
ls -l /bin/*sh
/bin/sh -> bash 链接文件类似Win中的快捷方式
env |more 查看当前操作系统状态
chsh -s /bin/csh 切换shell 注销重新登录后生效
history 5 返回最近执行的5个命令
!5 执行history编号为5的命令
!ls 执行上一个以ls开头的命令
九、TCP/IP、Linux网络配置及rpm安装包管理
1、TCP/IP
是一组协议
tcp 传输协议 ip internet协议 udp 用户数据包协议 arp rarp (反)地址解析协议等
分4层 data
应用层 smtp,ftp,telnet app+data
传输层 解释数据 tcp+app+data
网络层 定位IP确定连接路径 ip+tcp+app+data(数据包)
链路层 与硬件驱动对话 帧头+数据包+帧尾 发送至网卡 经过多个路由器并找到目标IP的网卡 逆向走4层
tracert 目标IP 追踪路由
2、Linux网络配置
ifconfig
eth0 第一块网卡
lo 回路
方法一
ifconfig eth0 X.X.X.X 配网卡
ifconfig eth0 network X.X.X.X 配子网掩码
会话断开后失效
方法二
vim /etc/sysconfig/network-script/ifcfg-eth0
/etc/rc.d/init.d/network restart 重启网卡使配置生效
3、rpm
rpm -qa 查询系统中安装了哪些软件
rpm -q mysql 查询是否安装Mysql
安装卸载自行百度
十、进程
1、概念
进程就是正在执行的程序
线程是轻量级的进程,进程有独立的地址空间,线程没有。
地址空间是内存分配给进程的一块区域,进程在此区域内活动。地址空间不一定是连续的。
线程(fork/thread)不能独立存在,线程是由进程创建的。
2、ps
ps -aux a全部 u用户格式 x显示运行参数
UID PID PPID C STIME TTY TIME CMD
root 14124 13991 0 00:38 pts/0 00:00:00 grep --color=auto elasticsearch
UID 程序被该UID所拥有
PID 就是这个程序的ID
PPID 则是其上级父程序的ID
C CPU使用的资源百分比
STIME 系统启动时间
TTY 登入者的终端机位置
TIME 使用掉的CPU时间。
CMD 所下达的是什么指令
3、top
top 动态查看进程
系统时间 服务器启动时间 登录用户数
load average(系统负载情况):后面有3个参数 它们的和除以3大于0.6(60%)时系统资源紧张
xx proccesses: x sleeping, y running, z zombie, q stoped
xx 进程总数 z 僵尸进程数(进程终止,由于某种原因没有通知父进程,这个进程占用的CPU和内存就不会被回收)
CPU states: ... w% idle cpu有w%的空闲
Mem: xx av, y used, z free,...
xx内存总数
Swap(虚拟内存)
虚拟内存是界于磁盘和真实内存中的一块,一般是真实内存的两倍
top 回车 u 回车 userName 回车 查看指定用户的进程
top 回车 k 回车 forkId 回车 结束指定进程
top -d 10 每10秒更新进程状态
4、date
date MMDDHHMMCCYY.SS 月月日日时时分分年年年年.秒秒
5、netstat
netstat -anp 查看网络状态 按端口号排序 显示进程号
netstat -tunlp 查看端口占用
netstat -nap | grep 2708 根据进程ID查看端口占用
6、traceroute
traceroute 目标IP 追踪路由
route 查看本机路由情况(显示路由表)
7、lsof -i:8080 查看8080端口占用情况
十一、Mysql及ssh
1.mysql数据备份
mysqldump -u root -p123 DBName > /home/dbRb
2.数据导入
mysql -u root -p123 DBName < /home/dbRb
3.ssh相关
https://blog.csdn.net/shenwanjiang111/article/details/78124335
十二、扩展、取别名及Linux启动过程
1、扩展
cp -r
rm -rf
r 递规
f 强制
ln -s 源 目标 类似win下快捷方式
du -sh .ivy2/ 查看目录大小
通配符 *多个 ?一个 [1-6]
du -h --max-depth=1
2、取别名
alias llh='ls -l /home' 取别名
3、Linux启动过程
a.bios自检 检查系统从哪里启动(硬盘/光驱/U盘等)
b.启动grub/lilo 引导界面
c.运行Linux内核并检测硬件 检测打印机等
d.运行系统的第一个进程init
e.init读取/etc/inittab 读启动状态文件
f./etc/rc.d/rc.sysinit 系统初始化脚本
g./etc/rc.d/rcX.d/[KS]* 根据运行级别配置服务 终止K开头的 启动S开头的
h./etc/rc.d/rc.local 执行本地特殊配置
i.其它特殊服务
十三、压缩解压和其它
zip aa.zip file file1
zip -r aa.zip dir1
unzip aa.zip
lsb_release -a
cat /etc/redhat-release 查看Linux版本
arch 查看机器位数
# 杀进程
kill -9 $(ps -ef | grep ***.jar | grep -v grep | awk '{print $2}')
# 判断xxx.jar进程是否存在
sec=3
i=1
while true
do
count=`ps -ef | grep xxx.jar | grep -v grep | awk '{print $2}' |wc -l`
if [ $count -gt 0 ]; then
#若进程还未关闭,则脚本sleep几秒
echo sleep $sec second the $i time, the JMS thread is still alive
let i+=1
sleep $sec
else
#若进程已经关闭,则跳出循环
#echo "break"
break
fi
done
echo "export finished"
# 遍历dict
declare -A dic
dic=(['k1']='v1' ['k2']='v2' ['k3']='v3')
for key in $(echo ${!dic[*]})
do
echo "${dic[$key]} to $key finished"
done
# 遍历list
str_list=('a' 'b' 'c')
for i in "${!str_list[@]}"; do
echo ${str_list[$i]}
done
for str in ${str_list[*]}
do
echo $str
done