linux笔记

第一次课程

根目录 、家目录

1.~ 代表是home目录,也就是家目录, / 代表的是根目录
2.用户登录后在 家目录 ,可用pwd命令查看,普通用户为 /home/用户名,root用户为/root
3.根目录是在最顶端的目录(因为已经不能cd …到上一级目录了 )
4.根目录是所有用户的都可以操作的,家目录 在家目录下的用户才有权限操作(管理员可以分配权限)
5. root 用户 家目录:/root
其他用户 家目录:mashu /home/mashu

命令帮助:
命令 --help
[root@xiyidata001 ~]# ls --help
Usage: ls [OPTION]… [FILE]…
[] 代表可选
… 代表多个

场景:
某个文件夹 100个文件,我想查看 最近修改的文件 ?
ll -r -t 按照 时间排序 快速找到 哪些文件更新了
ll -rt
-r, --reverse 逆序排列
-t sort by modification time, newest first(按修改时间排序,最新的在前面)

ll -a 也显示以.开头的文件和文件夹 隐藏文件
ll -h 仅仅查看文件的大小(y以人类可读方式 K、M)

路径:
绝对路径:光标从根目录开始 /root
相对路径:光标当前位置开始 dir1

cd …/ 退到上一层目录
cd …/…/ 退到上一层目录的上一层目录
cd ./ 当前目录

cd - 回退到上一次命令的目录

修改机器命令
xiyidata001 =》 xiyidata002
命令修改机器名字
hostnamectl set-hostname xiyidata002

echo “xiyidata” > 3.txt
> 创建或者覆盖一个文件
>> 创建或者追加一个文件

当编辑文件时 中断运行(ctrl+c 或者ctrl+z) 导致不正常保存退出
解决办法:ll -a 查看隐藏文件找到.swp文件 接着删除.swp文件

清屏操作:
clear
ctrl+l

第二次课程

1.查看文件
cat 查看文件所有内容 全部显示
more 一页一页往下翻 按空格 往下翻 q退出
less 一页一页往下翻 按空格 往下翻 上下箭头 q退出

cat => 文件内容比较少
vim 查看文件内容 不编辑
less =》 文件内容比较多

2.vim
进入尾行模式 :
1.搜索关键词 /word
找下一个关键词 :n
vim文件时想要搜索root单词,直接输入/root 然后回车

补充: 
	1.实时查看文件内容 
		tail -f  1.log
		tail  -F 
		-F = -f +retry

		未来 你要 使用flume监控日志文件 tail -F 这个参数  采集日志数据

	2.查看文件 倒数 n行	
		tail -200f 1.log
		
场景: 
	1.程序日志 错误 =》 程序出现问题
程序日志:log4j 
app.log : 
	日志级别: 
		info 、warn、error
	
	如何快速定位日志文件里面 error信息? 
		1.cat 
	cat messages-20221023 | grep ERROR

| 管道符 : 上一个命令的结果 作为下一个命令的输入
grep 过滤 某个词 所在的行

	cat messages-20221023 | grep -A 5 ERROR  ERROR词的后5行
	cat messages-20221023 | grep -B 5 ERROR  ERROR词的前5行
	cat messages-20221023 | grep -C 5 ERROR  ERROR词的前后各5行

	cat messages-20221023 | grep -C 5 ERROR > error.log 
	将错误信息覆盖到error.log中	

3.mv 移动 cp 复制
mv 始终是一份 快
cp 最终文件是两份 慢

不标准写法:
[root@xiyidata001 ~]# mv dir1 xiyidata
[root@xiyidata001 ~]# cp -r dir2 xiyidata
标准写法:
mv dir1 xiyidata/dir1
cp -r dir2 xiyidata/dir2

2.修改文件、文件夹的名字
[root@xiyidata001 ~]# mv 3.log 3.log_blk
[root@xiyidata001 ~]# cp 2.log 2.log_blk

4.rm 删除文件、文件夹 【高危命令】
rm -rf 文件夹/文件

注意:
rm -rf / => 不要使用 高危

shell脚本 :
清空 app运行日志 【前7天日志】

避免:
	LOG_DIR=/xxxx  =>通过参数穿进来的
	LOG_DIR=
	rm -rf ${LOG_DIR}/*
	rm -rf /*

5.别名 alias
ls -l = ll

[root@xiyidata001 ~]# alias sk=‘cd /root/spark’
[root@xiyidata001 ~]# sk
[root@xiyidata001 spark]# pwd
/root/spark

使用范围:
仅仅是当前会话生效
[root@xiyidata001 spark]# sk
-bash: sk: command not found

如何解决这个问题?
需要把 定义好的 别名 在环境变量文件中配置 即可

6.环境变量
环境变量配置文件:
1. app 命令 在linux环境中 任何位置都可以使用
$PATH:环境变量目录

1.全局环境变量  : linux系统内所有用户 都生效 都可以使用
	/etc/profile 

2.个人环境变量 : linux系统内 当前用户生效 其他用户不能使用
	~/.bashrc
	~/.bash_profile	


场景: 
	解决 sk别名 在linux系统任何位置都可以使用?
		1.vim /etc/profile
		2.生效环境变量配置文件 生效
			1.重新打开一个 会话
			2.source /etc/profile

3.补充: 
	清空历史命令 =》 
		1.history -c

第三次课程

用户组相关命令
1.查看用户相关的命令
ll /usr/sbin/user*
2.查看用户组相关的命令
ll /usr/sbin/group*
3.创建用户并查看用户
useradd top
4.查看用户
id top
uid=1000(top) gid=1000(top) groups=1000(top)

useradd top: 创建一个用户,底层默认完成这三件事
1.用户名字top 【普通用户】
2.用户组 top
3.创建一个家目录:/home/top
4.主组 top

切换用户
su - name 【推荐】
1.切换用户 直接切换到该用户的家目录
2.切换用户 并执行该用户的环境变量
source ~/.bashrc
source ~/.bash_profile

su name
1.切换用户 不切换目录

样式丢失问题
[root@xiyidata001 ~]# useradd top
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

-bash-4.2$ (命令行出现此样式)
解决方法: 
	cp /etc/skel/.bash*  /home/top/
	su - top 
-bash-4.2$ => [top@xiyidata001 ~]$

用户信息
vim /etc/passwd
top: x:1003:1004::/home/top:/bin/bash
/bin/bash 对linux系统的命令进行解析
查看系统信息时最好使用root用户
CDH平台:
hdfs、hive、yarn、hbase、
su - yarn 切换用户不成功 (登录的时候用户信息里面的解释器进行限制的,上文提到的/bin/bash)
yarn❌1000:1000::/home/top:/sbin/nologin 切换用户不成功会有提示
yarn❌1000:1000::/home/top:/usr/bin/false 没有提示
解决方法把后缀为 /sbin/nologin 或者是 /usr/bin/false 的目录修改成 /bin/bash

需求:
top 添加一个bigdata?
1.给用户添加组
[root@xiyidata001 top]# usermod -a -G bigdata top
[root@xiyidata001 top]# id top
uid=1000(top) gid=1000(top) groups=1000(top),1002(bigdata)
top 将bigdata作为 top用户的主组?
[root@xiyidata001 top]# usermod -g bigdata top
[root@xiyidata001 top]# id top
uid=1000(top) gid=1002(bigdata) groups=1002(bigdata)
导致用户本身的组 没了?
usermod -a -G top top
用户组信息
vim /etc/group

sudo 普通用户临时具有使用root权限的命令
sudo:
1.配置 top
/etc/sudoers
top ALL=(root) NOPASSWD: ALL
sudo命令用法: sudo cat /root/2.txt

vim文件时查找root单词,直接输入/root 然后回车

文件权限命令

1.权限:
-rw-r–r-- 1 root root 21 Nov 2 21:45 3.txt
drwxr-xr-x 2 root root 6 Nov 2 20:44 bigdata
rw-r–r–
分别代表root root组 top 这个文件root用户读写,root组只读,top用户只读
第一字母:
d 文件夹
- 文件
l 链接【win 快捷方式】
9个字母表示权限:
三个字母为一组:rwx r-x r-x 755
第一组:rwx 4+2+1=7 代表文件或者文件夹的所属用户的权限
第二组:r-x 4+0+1=5 代表文件或者文件夹的所属用户组的权限
第三组:r-x 4+0+1=5 代表文件或者文件夹的其他用户的权限

r:read 读权限 4
w:write 写权限 2
x:执行权限 1
-:没有权限 0

2.权限操作
chmod 修改文件权限
[root@xiyidata001 tmp]# chmod 646 1.log
修改文件夹权限 -R参数 以递归的法式,文件夹下的文件权限一同被修改
[root@xiyidata001 ~]# chmod -R 757 dir4

chown 修改 文件的 所属用户 用户组
chown [OPTION]… [OWNER][:[GROUP]] FILE…

	chown top:bigdata 1.txt
	chown -R top:bigdata dir

补充: tmp目录
linux /tmp :权限 777
1.tmp 里面存的文件 默认只存30天【只要30天内该文件没有更新 就会被删除】

其他命令:
1.查找文件
1.find
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression]

find [path…] [expression] :

expression : -name PATTERN

[root@xiyidata001 ~]# find / -name “1.log”
/root/1.log
[root@xiyidata001 ~]# find /root -name “*.log”

2.locate => 效率高 =》推荐
[root@xiyidata001 ~]# locate
-bash: locate: command not found
[root@xiyidata001 ~]# yum install -y mlocate

[root@xiyidata001 ~]# locate 1.log
第一次使用locate 需要安装和更新数据库
locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory
[root@xiyidata001 ~]# update
update-alternatives update-ca-trust updatedb update-mime-database
[root@xiyidata001 ~]# updatedb
[root@xiyidata001 ~]# locate 1.log
/root/1.log
/root/31.log

2.查看文件大小
文件 : ll -h 、 du -sh
文件夹:du -sh [file]…
[hadoop@bigdata23 ~]$ du -sh 1.log
4.0K 1.log
[hadoop@bigdata23 ~]$ du -sh app
2.4G app
[hadoop@bigdata23 ~]$ du -sh ./*
4.0K ./1.log
4.0K ./2.log
2.4G ./app
306M ./app-data
24K ./bin
8.0K ./data
8.0K ./shell
1.2G ./software
17M ./zookeeper.out

3.查找命令的操作
[root@xiyidata001 ~]# locate
-bash: locate: command not found
可能:
1.当前系统 就是没有安装 命令/软件
2.当前系统 安装软件 但是没有配置环境变量

1.whereis 从当前系统中查找命令
[root@xiyidata001 ~]# whereis ls 可以确定 当前系统ls是有安装的
说明没有配置环境变量
2.which 从环境变量中查找是否配置环境变量
[root@xiyidata001 ~]# which aaa

[hadoop@bigdata23 ~]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[hadoop@bigdata23 ~]$ which ls
alias ls=‘ls --color=auto’
/bin/ls
[hadoop@bigdata23 ~]$ which aaa
/usr/bin/which: no aaa in (/home/hadoop/app/spark/bin:/home/hadoop/app/scala/bin:/home/hadoop/app/kafka/bin:/home/hadoop/app/zookeeper/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/home/hadoop/app/java/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin)

第四次课程

vim 命令
命令行模式:光标
u 是撤回
dd 删除当前行
dG 删除当前行以及以下所有行
ndd 删除当前行以及以下n行

yy+p 复制当前行并粘贴
yny+p 复制当前行以及以下n行并粘贴

gg 跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift+$ 跳转到当前行的行尾
shift+^ 跳转到当前行的行尾

场景:
如何清空这个文件内容,从另一个文件内容拷贝过来 ?
gg=> dG => i =>鼠标右键单击 复制过来

如何清空一个文件内容
1.gg=> dG
2.cat /dev/null > 1.log
3. true > 1.log
4. echo “” > 1.log 【不是真正的清空文件】里面有一个字节
在这里插入图片描述
场景:
shell脚本 用于 存储日志数据 按照日志文件 字节大小来判断是否是空的日志文件?

	if filesize >0 ;then 
		啥也不做 
	else 
		灌入日志数据

2.系统命令
磁盘 df

[root@xiyidata001 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 4.7G 33G 13% /
比如:挂载新的磁盘
根目录满了之后用data目录 方式:软连接,小盘换大盘?
/dev/vdb1 10T 4.7G 33G 13% /data1
/dev/vdb2 10T 4.7G 33G 13% /data2
/dev/vdb3 10T 4.7G 33G 13% /data3
/dev/vdb4 10T 4.7G 33G 13% /data4
~:
cd /data2/xiyi => alias

内存 free -h
在这里插入图片描述

负载 top
1.20:57:07 up 28 days =》 机器运行了多长时间
2. 1 user =》当前机器有几个人正在使用
3.load average: 0.04, 0.03, 0.05 默认值 100满
5min 10min 15min
0.04, 0.03, 0.05 =》 20 说明 当前服务器 卡卡的

3.yum安装 =》 linux centos
yum search xxx
yum install xxx
yum remove xxx

安装:
	yum install httpd 
启动服务: 
	centos6 :
		service  httpd start|status|stop|restart|disable 一个命令 只能操作一个应用 
	centos7:
		service  httpd start|status|stop|restart|disable [兼容]
		systemctl start|status|stop|restart|disable httpd app2 app3 app4  一次性操作多个应用

可以: web 
	浏览器: 
		http://ip:80
		https://ip:443

进程 & 端口号
httpd 应用启动:
1.如何查看应用的进程号?
ps -ef | grep httpd => 应用的 pid

2.端口号 :一般是对外提供服务的 入口
	1-65535
	防火墙:控制开放端口

	netstat -nlp | grep [httpd|pid]

[root@xiyidata001 ~]# netstat -nlp | grep 31966
tcp6 0 0 :::80 ::😗 LISTEN 31966/httpd

:::80 => 代表 任意ip 都可以访问ip 当前机器的外网ip这个端口
0.0.0.0:80 => 代表 任意ip 都可以访问当前机器的外网ip这个端口
外网ip:80 => 代表 任意ip 都可以访问当前机器的外网ip这个端口

127.0.0.1:80 => 表示该服务 只能自己服务器里面 自己访问自己
localhost:80 =>表示该服务 只能自己服务器里面 自己访问自己

场景 :
leader去打开xxx服务的应用的网页? 你会涉及到哪些linux命令?
进程号+端口号
ip
ps -ef | grep xxx => pid
netstat -nlp | grep pid => port
浏览器:
http://ip:port

补充:
如何杀死进程?
1.停止应用服务 =》 优雅
2.kill -9 pid…
kill -9 $(pgrep -f httpd) (全部杀死,包括子进程)

4.通讯:
ip 通不通
ping ip/hostname/域名
port 通不通
telnet ip port
不通:
1.port 本身没有 服务 支撑
2.port有服务支撑 但是防火墙没有打开这个端口 、云主机 安全组策略限制

[root@xiyidata001 ~]# yum install -y telnet
telnet [host-name [port]] : 即可以监测ip 也可以监测 port

telnet: connect to address 127.0.0.1: Connection refused
Connection refused:
1.ping 【有的时候 服务器ping功能是禁止的】
2.telnet

5.压缩 解压
zip: [root@xiyidata001 ~]# yum install -y zip
压缩:
zip [zipfile list]
[root@xiyidata001 ~]# zip log.zip 1.log 2.log 31.log

	解压: 
		unzip
		unzip file[.zip]  [-d exdir]
		[root@xiyidata001 ~]# unzip log.zip -d ./spark/
		Archive:  log.zip
		extracting: ./spark/1.log           
		extracting: ./spark/2.log           
		extracting: ./spark/31.log
tar:归档文件

	普通文件:1.log 2.log 
	归档文件: log.tar
	gzip压缩后的归档文件:log.tar.gz

	归档: 
		tar -c -v -f log.tar 1.log 2.log
		tar -cvf  log.tar 1.log 2.log
	解归档:
		tar -x -v -f log.tar  -C ./xiyidata
		tar -xvf log.tar  -C ./xiyidata

	压缩归档:
		tar -zcvf  log.tar.gz 1.log 2.log
	解压归档:
		tar -zxvf  log.tar.gz  -C ./dir4

6.定时调度
crontab
Options:
-e edit user’s crontab
-l list user’s crontab 查看调度的任务有哪些

crontab -e:编辑任务调度

          • : 每分钟

  • 分钟 小时 日 月 周

          • date >> ~/dt.log

crontab 时间调度工具

任务调度平台:
airflow xxl doph :

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值