手把手教程:Linux基础

前言:
本篇记录了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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值