【大数据基础】Linux基础

Linux常用文件/文件夹 作用总结

/etc目录 是系统的配置文件目录。在linux下修改系统配置时就会在/etc这个目录下修改配置文件
/etc/profile 是系统全局环境变量设置,里面可以添加对所有用户有效的环境变量,系统配置等;
/etc/hosts 是主机域名的配置;

bin: 是binary的简写,主要放置系统的必备执行文件

/usr/bin 主要是主要放置应用程序工具的必备执行文件

/sbin:主要放置系统管理的必备程序

/usr/sbin 主要放置网路管理的必备程序

Linux常用命令

pwd

用来查看当前光标所在的路径

家目录

linux系统的目录多是以根目录"/"开始的
家目录都可以用~表示
root 超级管理员 家目录/root
gru 普通用户 家目录/home/gru

cd 切换目录

cd 或者 cd ~ 回到家目录
cd - 切到上一次的目录
cd …/ 切换到上一层目录
cd …/…/ 切换到上两层目录

目录(路径)

绝对路径: 以/(根目录)开头
相对路径: …/ 以当前目录开头,开始没有/
一般都会用相对路径

clear 清空屏幕

ls

ls 打印当前目录的所有文件夹和文件的名称

ls-l 等价于ll 用于显示文件夹和文件夹的详细信息(权限,用户,用户组,日期)

ls -l -a或者ls -la查看隐藏的文件/文件夹

(以.开头的文件 隐藏文件或者文件夹)

查看ip

ifconfig 用于linux下
ipconfig 用于windows下

创建目录

mkdir ruozedata 创建一层目录
mkdir -p 1/2/3 级联 串行 创建目录
mkdir 4 5 6 并行创建

文件/文件夹的移动

mv 原路径文件夹/文件 目标端的路径文件夹/文件
mv还可以重命名 只需要在目标端路径后加上/重命名
(文件如果移动到当前目录下,只是改个名字)

文件/文件夹的复制

(文件)cp 加上/也可以改名字

(文件夹)cp -r

复制和移动

移动和复制都可以讲文件/文件夹改名
移动的文件/文件夹只有一份 复制有两份
移动的速度会比复制快,因为移动的实质是改变文件的路径名
文件夹的复制 要加 -r

查看命令帮助

cp --help
开始的是usage 其中 [OPTION]表示可选可不选
例如 :ls -a == ls --all

查看文件内容(静态)

cat 文件内容一下子全部显示
more 文件内容一页一页的往下翻(缺点是按空格键往下,没法往回。只能按q退出)
less 文件内容 往下 往上 (按q退出)

动态(实时)查看文件内容

tail -f xxx.log 实时查看
tail -F xxx.log 实时查看 F=f+retry(文件被干掉了之后,重新创建后能够重新查看)
(一般以ctrl+c 结束)

echo

echo “error” 直接输出打印
echo “!!!”>>123.log 追加
echo “!!!”>123.log 覆盖

touch

touch创建空文件

别名及别名的创建

系统默认有别名 例如 ls -l=ll
自己创建别名 alias
当前session有效的别名 alias grucd=‘cd /root/grudata’
永久生效需要配置环境变量

配置全局环境变量文件

vi /etc/profile
到最后一行 i 进入input模式
#alias (注释)
alias grucd=‘cd /root/grudata’
点击esc退出模式 shift+: wq 退出
source /ect/profile (或者 . /etc/profile)

配置个人环境变量文件

个人环境变量文件 ~/.bash_profile
vi .bash_profile

删除 rm

rm gru.log(只有系统会询问)
rm -f gru.log(加上 -f 强制删除,系统不会询问)
rm -r gru1 删除文件夹
rm -rf gru1 强制删除文件夹
千万千万不能有 rm -rf /

设置变量

key=value
=号左右不能有空格

变量的使用

变量也可以不加{}
但是${key}y 和 $keyy 表示的不一样

history

可以查询到历史操作记录
!22 执行第22行的命令
清空历史命令 echo “” > .bash_history
root查看用户历史命令的文件路径 /home/xxx/.bash_history

用户,用户组的常用命令

用户
用户的常用命令 一般都在 /usr/sbin目录下
常用的有
useradd
userdel
usermod
而组的常用命令也在 /usr/sbin目录下
groupadd
groupdel
groupmod
一个人可以在多个用户组里,但是必须有且只有一个主组
useradd ruoze 自动创建一个用户组
id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
uid 用户id
gid 主组
groups 所有组(可以有多个)

cat /etc/passwd(etc目录是系统的配置文件目录)
cat /etc/group
userdel ruoze 当消除用户是时
/etc/passwd 没有记录
/etc/group 没有记录(因为ruoze该组只有一个用户ruoze,用户被删除,组校验就他自己,就删除)
但是家目录还在

用户组:
[root@hadoop001 home]# groupadd bigdata (新建组)
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
[root@hadoop001 home]# usermod -a -G bigdata ruoze(-a是追加)
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze),502(bigdata)
把bigdata组添加到了ruoze用户中

[root@hadoop001 home]# usermod -g bigdata ruoze
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=502(bigdata) groups=502(bigdata)
把bigdata组变成了ruoze的主组,但是也顶掉了本身存在的ruoze组
[root@hadoop001 home]# usermod -a -G ruoze ruoze(重新添加ruoze组)
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=502(bigdata) groups=502(bigdata),501(ruoze)
[root@hadoop001 home]#

设置用户密码

passwd gru

切换用户

su - gru ’-’代表切换用户后,进入该用户的家目录并执行环境变量文件
su gru 虽然切换了用户 但是还停留在之前的家目录中
切换用户后 之前的标识符号由# 变为 $
切换用户后 想返回之前用户 exit

普通用户临时获取root最高权限

[root@hadoop001 ~]# vi /etc/sudoers
Allow root to run any commands anywhere
root ALL=(ALL) ALL
gru ALL=(root) NOPASSWD:ALL
:wq! 强制保存退出 (由于是只读文件,所以需要加上!)

管道符 |

管道符起到的是连接的作用,前一个的结果作为后一个的开始。
cat /etc/passwd | grep gru (grep一般起到过滤的作用)

grep

grep是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。grep + 条件 : 筛选出满足条件的行出来并打印
grep -v +条件 :筛选出不满足这个条件的行出来并打印。

查看进程 +查看端口号(需要死记硬背)

ps -ef | grep xxx 查看当前进程,并筛选出满足条件的
ps -ef | grep tail | grep -v grep(并把自己过滤掉)
ps -ef | grep ‘log’(从进程中找到有log的文件)
显示的是 用户 +pid(进程标识号 process identification) + ppid(父进程)
netstat -nlp|grep pid 查看出进程对应的端口号(并不是所有的进程都有端口)
netstat -nlp 查看所有端口号
正常流程找端口号: pid–>port
非正常流程:netstat -nlp|grep ssh

链接拒绝错误 Connection refused:

windows 控制面板 卸载程序 打开或关闭windows功能 选中Telnet客户端 部署cmd
ping ip
telnet ip port 这两个都ok说明服务没问题
linux :
which telent 确认存不存在(which为查找命令)
yum install telnet.x86_64

已知ip,打开xxx软件的web界面

ps -ef | grep xxx 查到进程id
netstat -nlp | grep pid(netstat -nlp) 查看所有端口号,再通过进程id 查到端口号
(ip:端口号 )访问界面

杀进程

kill -9 pid
kill -9 2470 2661 并行杀 ps -ef 查看进程
我只想杀死包含log字符的所有进程
kill -9 $(pgrep -f log) 把包含有log的进程都杀掉
kill -9 1187 1307 1758 2470

linux操作: 遇到rm kill高危命令 需确认再确认

搜索

history | grep xxx 通过历史操作,搜索出xxx操作
ps -ef | grep xxx 查找当前进程,筛选出满足xxx的进程
find / -name ‘* *’ 从根目录全局模糊搜索
find ./ -name ‘’ 从当前目录搜索
** 代表 模糊匹配(能查到隐藏文件)

linux 安装软件 rpm

yum search xxx
yum install xxx
yum remove xxx

Linux的5中查找方式

  1. find

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

find的使用格式如下:

$ find <指定目录> <指定条件> <指定动作>

- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。

- <指定条件>: 所要搜索的文件的特征。

- <指定动作>: 对搜索结果进行特定的处理。

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

find的使用实例:

$ find . -name ‘my*’

搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。

$ find . -name ‘my*’ -ls

搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。

$ find . -type f -mmin -10

搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。

  1. locate

locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

locate命令的使用实例:

$ locate /etc/sh

搜索etc目录下所有以sh开头的文件。

$ locate ~/m

搜索用户主目录下,所有以m开头的文件。

$ locate -i ~/m

搜索用户主目录下,所有以m开头的文件,并且忽略大小写。

  1. whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

whereis命令的使用实例:

$ whereis grep

  1. which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

which命令的使用实例:

$ which grep

  1. type

type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。

type命令的使用实例:

$ type cd

系统会提示,cd是shell的自带命令(build-in)。

$ type grep

系统会提示,grep是一个外部命令,并显示该命令的路径。

$ type -p grep

加上-p参数后,就相当于which命令。

man 命令帮助

yum -h (-help)
man yum (很详细)

vi编辑文本内容

vi 文件名 进入文本
分为命令模式 尾行模式 编辑模式
命令模式 常用操作:
i 进入编辑模式
dd 删除当前行
dG删除当前行及以下所有行
ndd 删除光标以下的n行
gg 跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift+$ 行尾

常用操作组合:
1:这个文件内容很多很多 我想要清空,重新开始编辑:
文本编辑操作:vi 文件名 + gg + dG
echo操作: echo “” > 文件名
但是,这是伪清空 还有1个字节(shell判断文件是否清空 一般是根据字节大小来判断 这时就错了)
最常用的清空:cat /dev/null > 文件名 真正清空
(/dev/null 属于字符特殊文件,它会丢弃一切写入其中的数据)
2:这个文件内容很多很多 我想要追加写文件:
G + $ +i 朝右箭头按一次+回车 到新的一行
3:快速定位到error关键词
进入尾行模式 :/+搜索内容 然后 n N 上下移动
把行号显示出来 set nu / set nonu
或者 :cat 文件名 | grep 搜索内容
grep 搜索内容 + 文件名
4:只要生产上配置文件、修改别人的服务的配置,一定要先cp

权限问题

在目录下 ll 显示详细信息后
drwxr-xr-x. 3 root root 4096 Jan 19 20:42 1
-rw-r–r--. 1 root root 10033 Jan 19 20:57 install.log.syslog

从两行具体信息看:
第一列 d 代表文件夹 ,- 代表文件夹(另外 l 代表连接)

rwxr-xr-x
rw-r–r-- 代表权限
三个为一组,一共分为三组
r read 读 4
w write 写 2
x 执行shell脚本 1
— 代表0
755 744 444
三组:该用户权限 该用户组权限 其他用户权限

三列 代表用户
四列 代表用户组

五列 代表文件字节

修改权限

chmod(权限)(文件/文件夹)
chmod 444 ruoze.log.1
chmod +x /root/test.sh
chmod -R 777 目录

chown -R gru:gru 目录 修改目录用户:用户组

Linux只有这两个R参数常用

软连接

相当于 快捷键 快捷方式
详细信息中,以 l 开始
ln -s 原始路径 目标路径

查看文件/文件夹字节数

查看文件的大小:
ll - h +文件名 : 可以查看文件内容的实际大小,但是不能显示文件夹的大小。
du - sh +文件名
查看文件夹的大小:du - sh + 文件夹 :

但是,ll -h 和 du - sh 显示的文件大小不一定一致。 因为 ll - h 显示的是文件的真实大小, 而 du 显示的是文件所占block的大小,block默认是4k。所以du 显示的一般是4k 的倍数 。

shell脚本

#!/bin/bash

sh test.sh sh运行脚本,不需要修改权限
./运行的话需要chmod +x 修改权限

上传下载

yum install lrzsz
rz window ==>linux
sz linux ==> window
sz

压缩和解压缩

zip unzip:
zip -r 6.zip 6/*
unzip 6.zip

tar.gz :
tar -czf 6.tar.gz 6/*
tar -xzf 6.tar.gz
tar -czf 6.tar.gz 6/*
tar -xzf 6.tar.gz 展示压缩/解压缩过程

wget 下载

wget + 连接

调度

crontab -e :编辑
crontab -l :查看

猜你喜欢

转载自blog.csdn.net/weixin_43517453/article/details/88106208
今日推荐