文章目录
linux相关
1. 什么是linux
多用户,多任务,支持多线程和多CPU的操作系统,linux的应用领域:免费,稳定,高效的, 一般运行在大型服务器上
常用目录介绍:
目录名 | 说明 |
---|---|
/ 根目录 | 一般根目录下只存放目录,有且只有一个根目录 |
/home 家目录 | 系统默认的家目录,新增用户账号时,用户的家目录都存放在此目录下 |
/root | 系统管理员root的家目录 |
/bin/usr/bin | 可执行二进制文件的目录 |
/etc | 系统配置文件存放的目录 |
/mnt /media | 光盘默认挂载点 |
/tmp | 一般用户或正在执行的程序临时存放文件的目录 |
/var | 这个目录中存放着不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件 |
/usr | 系统级的目录,可以理解为C:/Windows/ |
/usr/lib | 理解为C:/Windows/System32。system32是Windows操作系统的系统文件夹,是操作系统的中枢 |
/usr/local | 用户级的程序目录,可以理解为C:/Program Files/。用户自己编译的软件默认会安装到这个目录下。 |
/opt | opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 |
linux的核心思想:一切皆为文件
[root@localhost ~]# 的含义:
- @之前的是当前登录的用户
- localhost是主机名字
- ~当前所在的位置(所在的目录)
- ~家目录
- /根目录
- #的位置是用户标识
- #是超级用户
- $普通用户
linux命令的写法:
命令名 [选项] [参数]
- 命令名:相应功能的英文单词或单词的缩写
- 选项:可以用来对命令进行控制,也可以省略,选项不同,命令的结果不同
- 参数:传给命令的参数,可以是0个,也可以一个或多个
linux注意事项:
- 1.严格区分大小写
- 2.有的命令有选项和参数,有的有其一,有的都没有
- 3.选项的格式一般是 -字母 -单词 字母
- 4.可以加多个选项,多个选项可以合并(例 -a -b 可以合并成-ab)
- 5.命令 选项 参数 之间一定要有空格
————————————————
版权声明:本文为CSDN博主「小袁ITSuper」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuan2019035055/article/details/120584242
2. 文件权限
比如:
-rw-r--r-- 1 root root 762 07-29 18:19 exit
其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
Linux文件和目录的777、755、644权限解释
在linux系统中,文件或目录的权限可以分为3种:
r:4 读
w:2 写
x:1 执行(运行)
-:对应数值0
数字 4 、2 和 1表示读、写、执行权限
rwx = 4 + 2 + 1 = 7 (可读写运行)
rw = 4 + 2 = 6 (可读写不可运行)
rx = 4 +1 = 5 (可读可运行不可写)
示例:
最高权限777:(4+2+1) (4+2+1) (4+2+1)
第一个7:表示当前文件的拥有者的权限,7=4+2+1 可读可写可执行权限
第二个7:表示当前文件的所属组(同组用户)权限,7=4+2+1 可读可写可执行权限
第三个7:表示当前文件的组外权限,7=4+2+1 可读可写可执行权限
示例:
755:(4+2+1) (4+1) (4+1)
第一个7:表示当前文件的拥有者的权限,7=4+2+1 可读可写可执行权限
第二个5:表示当前文件的所属组(同组用户)权限,5=4+1 可读可执行权限
第三个5:表示当前文件的组外权限,5=4+1 可读可执行权限
示例:
644:(4+2) (4) (4)
第一个6:表示当前文件的拥有者的权限,6=4+2 可读可写不可执行权限
第二个4:表示当前文件的所属组(同组用户)权限,4=4 可读权限
第三个4:表示当前文件的组外权限,4=4 可读权限
3.常用命令
3.1 基本命令
- ping 28.4.139.133
- telnet 28.4.139.133 22
- sh 1.sh | tee -a 1.log 在屏幕上输出内容并追加到日志
- top 监控系统状况
- free -m 查看系统内存使用情况
- free -h
- dirname $a 目录名
- basename $a 文件名
- hostname -i 显示ip
- hostname 显示主机名
- grep test test.txt 查找test字符串所在行
- grep -i ha test.sh 忽略大小写查找
- grep -in ha test.sh 忽略大小写查找,并显示行号
- grep -v ha test.sh 显示出没有ha关键字的行
- date +%Y%m%d%H%M%S 显示时分秒
- ha=xiang|yu|fei
echo $ha|cut -d’|’ -f1 xiao
echo $ha|sed ‘s/|/@/g’ xiao@mian@yang - find / -size +1G | xargs du -h | sort -h
- pwd 显示当前目录
- ll -a 显示隐藏文件
- echo test > 1.txt 覆写 >>追加
- tail -f test.txt 实时查看文件
- tail -100 test.txt 查看后100行
- ls|wc -l 计数
- nohup sh monitor.sh >> monitor.log 2>&1 & 后台运行并写入日志
- nohup sh test.sh & 后台永久运行
- ssh app@192.168.234.130 远程登录到(从一台服务器跳转另一台服务器)
- chown -R app test/ 改变文件属主
- chmod +x test.sh 增加执行权限
- chmod -x test.sh 去除执行权限
- ps -ef |grep hue 查看进程
- ps -ef |grep hello |grep -v “grep”|awk ‘{print $2}’|xargs kill 进程号通过xargs传递给kill,杀指定关键字进程(grep -v "grep"去除包含grep的进程行)
- netstat -an|grep 查看端口
- rm -rf 递归删除文件/目录 (-r 删除目录及其下所有文件(递归删除) ,-f 即使文件属性为只读(即写保护),亦直接删除(强制删除))
- cp -r test/ 复制文件
- cp -f 覆盖
- mv 移动、重命名
- mv -f 覆盖
- Tab按键—具有『命令补全』和『档案补齐』的功能
- Ctrl+c按键—让当前的程序『停掉』
- ls -lrt 按时间排序
- head -100 test.txt 查看前100行 (head、tail 默认10行)
- whatis ls 查看用途
- man ls 查看帮助文档
- cat 1.txt
- cat -n 1.txt -n对输出的所有行编号
- hostroy:查看历史执行过的命令
!显示的序号 重复执行
! 部分字符串(匹配最近执行的) - alias[别名]=[指令名称] alias lx=ls
- mysql -h 11.20.111.14 -u datawind -p
- unix2dos 1.txt
- $1 $? $# 参数个数 $@参数列表
-
- more 查看文件
- less 查看文件 并且可以搜索 /向下搜索 ?向上
- 总结下more 和 less的区别:
- less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
- less / 查找 n下一个 N上一个,space向下翻页 b向上
3.2 两台Linux服务器之间复制文件
scp(secure copy)scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密
- scp test.sh app@192.168.234.130:$PWD 复制文件到当前目录
- scp -r test/ app@192.168.234.130:$PWD 复制文件夹
- scp -P 63225 /tmp/local.txt root@192.168.1.3:/root 以下方式适用于对方服务器端口不是22的情况(这里端口指的是ssh端口), 将本地机器/tmp/local.txt复制到远程服务器(端口为63225)的/root目录下
3.3修改环境变量
- vi ~/.bashrc //修改环境变量
- source ~/.bashrc //立即生效
- echo $PATH //查看环境变量
login shell:此种方式登录时,shell会重新读取/etc/profile和~/.bash_profile来应用新的环境变量。
non-login shell:此时shell不会读取/etc/profile和/.bash_profile,而是读取/.bashrc来应用新的环境变量。话说标题是区别与影响,
su切换用户没有获取用户的环境(当时用的命令是"su xxoo",
这里xxoo为要切换的用户,以root身份执行的此命令),看来问题就在这倆login方式,根据现象我们可以判断 su xxoo执行了non-login shell。
su app 默认情况下是执行的non-login shell,因为要执行login shell需要在su后面添加参数"-“或”-l"或"–login"。所以要在su之后获取用户的环境变量,需要执行类似"su - xxoo"之类的命令。
~/.bash_profile对当前用户新打开的bash生效
~/.bashrc对所有用户新打开的bash生效
在profile文件末尾添加JDK路径:(shitf + g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=
P
A
T
H
:
PATH:
PATH:HADOOP_HOME/bin
export PATH=
P
A
T
H
:
PATH:
PATH:HADOOP_HOME/sbin
source /etc/profile.d/my_env.sh 生效
3.4 linux打包、解压
zip
- zip -r test.zip test
- unzip user.zip -d /usr/local/bigdatacase/dataset 解压到指定的目录
tar
- tar -cvf etcbak.tar etc/ 打包一个tar
- tar -xvf etcbak.tar 解开一个tar
tar.gz
- tar -cvzf etcbak.tar.gz etc/ 打包压缩一个tar.gz
- tar -zxvf test.tar.gz -C /usr/local 解压到指定的目录
3.4 find
- find / -depth -name hdfs 查找hdfs目录
- find / -name test* 查找文件
- find / -size +1G 查找大于1G的文件
4.shell脚本相关
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口
4.1 常用语句
- sed -i “s/jack/tom/g” test.txt
- -f 文件是否存在
- -n 变量是否为空
- -ne 数值不等于
- -eq 数值等于
- echo ${line##*/} 去掉最右一个/左边
- echo ${line%/*} 去掉最右一个/右
- shell中&&和||的用法
命令之间使用 && 连接,实现逻辑与的功能。
只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。
例:判断是否为目录
test -d $1 && echo “$1 is a dictory” && exit 0
echo " $1 is not a dictroy"
exit 1 - case用法
case $1 in
1)
echo 1
;;
2)
echo 2
;;
esac
4.2 脚本调试
- 直接调试
echo输出中间值 - 使用调试命令
Shell本身提供一些调试方法选项:
基本写法: sh [-nxv] 脚本名字
参数:
-n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
-v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。
-x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
4.3配置文件
./ bak.cfg 导入变量
./ common.sh 导入函数
4.4 source
source .bash_rc
. test.sh 在当前进程中执行命令,而不是另起子进程
./ test.sh 和 test.sh 会另起进程
4.5 管道
在shell中,我们通常使用符合‘|’来表示管道
管道的定义
管道就是一个进程与另一个进程之间通信的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的输入。
5.其他
5.1 linux网速慢
亲测有效的方法为:
(1)在终端运行:sudo gedit /etc/modprobe.d/iwlwifi.conf
(2)在打开的这个配置文件中空白处添加:options iwlwifi 11n_disable=1
(3)保存文件并重启。
5.2 xshell使用
view-compose-compose pane,左下角选to all sessions,可同时操作多个终端
sz下载 rz上传
5.3 ping
ping -c1 $destination_ip &>/dev/null
ping后的-c1参数代表的是本主机向目标主机发送的最多测试包数。
&>为重定向 &>/dev/null /dev/null 是Linux里的无底洞,任何的 output 送去了无底洞就再也没了
nohup sh monitor.sh >> monitor.log 2>&1 &
用 >/dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃