Linux 的基础

linux, 一切皆文件

定时任务#

定时循环任务crontab#

【-e】 新增任务,格式 【*/1 * * * * echo "1111"  >> /root/to.txt】
【-l】 查看用户所有任务
【-r】 删除用户所有的任务

定时一次性任务 at#

第一步:at【时间】
第二步:回车后输入对应脚本
第三步:按两下ctrl+d,即可加入一次性任务队列
第四部:atq是查看任务数量

例:
at now + 2 minutes
date > /root/datelog.log  【按两下ctrl+d完成加入队列】



时间函数#

显示 2023-07-21 01:38:15

date "+%Y-%m-%d %H:%M:%S"

切换用户,关机,集群连接ssh#

# 切换用户
su -root

#注销用户
logout -root

# 把内存数据同步到磁盘
sync

# 立即关机
shutdown -h now

# 一分钟后关机
shutdown -h 1

# 立即重启
shutdown -r now

# ssh连接
ssh root@192.168.1.1
【如果ssh访问出错,删除/.ssh/known_ssh/】



网卡调试:#

vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPADDR="192.168.0.76"
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.0.254" # 网关地址
DNS1="114.114.114.114" # DNS服务器
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1206602f-ecc9-46f7-a411-2a8a1623f7ac"
DEVICE="ens33"
ONBOOT="yes"

目录结构#

1) /bin : 是binary的缩写,存放着经常使用的命令

2) /sbin :supper binary,存放着系统管理员使用的系统管理程序

3) /etc : 存放配置文件和子目录(如 安装mysql数据库 my.conf)

4) /usr : Unix System Resource(系统资源)的缩写,(如 window上的C盘program files)

5) /usr/lib : 系统自带软件如python文件会在这里,理解为C:/Windows/System32

6) /usr/local : 编译的软件默认会安装到这个目录下(可以理解为 C:/Progrem Files/)

7) /opt : 自定义安装软件存放的目录,不要可以直接rm -rf掉 (可以理解为 D:/Software)

8) /lib : library软件库,动态链接共享库,应用程序都需要用到(类似于window的dll文件)

9) /dev : device(设备)的缩写,设备管理器

10) /media : 识别设备如U盘、光驱,识别后挂载到这里

11) /mnt : mnt是mount(登上; 爬上; 攀登; 骑上; 乘上; 跨上 可直接理解为“挂载”)的缩写

12) /tmp : temp的缩写,临时文件目录

13) /home : 每个用户都有一个目录

14) /root : 超级权限着的用户目录

15) /var : variable(多变的)的缩写,是用于存储系统运行时要改变数据的目录;该目录存储的文件经常会发生变化,常用于部署项目程序文件(日志文件)

16) /lost+found : 一般情况是空的,系统非法关机后会存放一些文件

17) /selinux : security-enhanced linux, 是安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可自行调试

18) /proc : 不能动的目录, 系统内存映射目录

19) /srv : 不能动的目录,service的缩写,服务器启动后需要提取的数据

20) /sys : 不能动的目录, 这是linux2.6内核的一个变化,该目录下安装了2.6内核中新出现的文件系统sysfs


组group,用户user#

# 组:
增删改查: groupadd oneteam 、 groupdel oneteam 、 groupmod、 在/etc/group里

# 用户:
增:useradd -g oneteam tom (新增用户且加到oneteam这个组里)、
删:userdel tom(home用户记录)、userdel -r tom (删除且删除文件)
改:usermod -g mojie qqq(更改用户的分组)、 passwd tom (修改tom的密码)
在/home上用ll指令看,没有拥有者的就是删除了的


文件/目录操作#

# 创建目录: 
mkdir 【directoryname】 【-p : 创建多级目录】

# 创建文件:
touch 【filename】

# 删除: 
rm -rf 【目录,文件】
    -r 递归
    -f 不提示

# 复制(递归): 
cp -r 【文件路径】 【新路径】

# 剪切/改名: 
mv 【文件路径】 【新路径】 
mv 【旧名】 【新名】 

# 软连接创建 : 
ln -s 【原文件路径】 【软连接名】

# 压缩:
.gz
文件压缩: gzip 【文件路径】           
文件解压:gunzip 【文件路径】

.zip
目录压缩: zip -r 【目录路径】    
unzip 【目录路径】

两者都可压缩 .tar.gz 
tar -zcvf 【加压后文件名】【文件1】 【文件2】 【目录1】   
tar -zxvf baobao.tar.gz

-z 打包同时压缩
-v 显示详细信息
-f 指定压缩后的文件名
-c 产生.tar 打包文件
-x 解包.tar 文件
-C 解压到指定目录

目录ll权限#

修改目录权限#

# 修改目录权限 own为7,组内人员为5,组外人员为5
chmod 755 【目录名】

# 修改目录拥有者
chown -R 【用户名】 【目录名】

# 修改目录所在组
chgrp -R 【组名】 【目录名】

rwx权限详解#

read, write, execute

# rwx在文件里
r:可以读取,查看
w:可以修改,不能删除文件(要目录有w才能删除)
x:可以被执行

# rwx在目录里
r:可以ls
w:可以创建,删除,重命名
x:可以cd


找文件,目录的路径#

1) find搜索  
find 【路径范围】 【-name, -user, -size】
语法:find / -name 1.txt

2) which 软件
    whereis 软件

3) updatedb之后 
locate [文件名]

.bz2 (压缩后文件更小)#

1)dump 压缩

2)restore 恢复


文本#

编辑文本#

# vim 编辑器
    - yy是拷贝,p是粘贴
    - y5y复制5行
    - dd是删除
    - set nu 是显示行号
    - G是跳到末尾,gg是跳到首行
# 重定向:
cat 3.txt > 2.txt
 >是覆盖,>>是追加 

## 追加多行
cat >> 1.txt << EOF

>第一行
>第二行
>EOF

cat查看文本方式#

# 查看文件带行号:
cat -n 1.txt

# 一点点查看文件显示行号:
less -N 1.txt  (找字符:/字符 , q是退出)

# cat 配合管道符| 和 其他指令全集
grep(行筛选)
cut(列分割):【cut -d '/' -f 3- 】 以'/'为分割点,拿第三段以后全部列

awk (行列都筛选)【awk -F : '/^root/{print $1","$7}'】 以 root 开头的所有行,以:分割并输出第 1 列和第 7 列 
------  awk -v i=1 -F : '{print $3+i}' passwd ------        -v 代表插入变量
------  echo"15912345678” grep -E <1[34578][0-9]9J$ ------  -E 代表支持多正则规则

sed (行筛选-n p,删除d,替换c,插入a/i)

# 行筛选(找1~3行) ifconfig | sed -n "1,3p"
# 行筛选(找时间段)  ifconfig | sed -n '/11:02:10/, /12:00:00/p'

# 删除第2,3行 ifconfig | sed '2,3d'

# 替换第2行 ifconfig | sed '2c xxxxxxxxxx'

sed (列筛选 后向引用-r(正则支持) "s###g")
# ifconfig | sed -r 's#(^.*inet)(.*$)#\2#g'



unqi(去重):【uniq -c】 去重并且在前面显示 重复数
sort(排序): 
head 数字 (看前10条)
tail 数字 (看后10条)

正则匹配#

1)特殊字符:^
^ 匹配一行的开头,例如:
[atguigu@hadoop101 shells]$ cat /etc/passwd | grep ^a 会匹配出所有以 a 开头的行

2)特殊字符:$
$ 匹配一行的结束,例如
[atguigu@hadoop101 shells]$ cat /etc/passwd | grep t$
会匹配出所有以 t 结尾的行

3)特殊字符:.
. 匹配一个任意的字符,例如
[atguigu@hadoop101 shells]$ cat /etc/passwd | grep r..t
会匹配包含 rabt,rbbt,rxdt,root 等的所有行

4)特殊字符:*
* 不单独使用,他和上一个字符连用,表示匹配上一个字符 0 次或多次,例如
[atguigu@hadoop101 shells]$ cat /etc/passwd | grep ro*t
会匹配 rt, rot, root, rooot, roooot 等所有行

5)字符区间(中括号):[ ]
[ ] 表示匹配某个范围内的一个字符,例如
[6,8]------匹配 6 或者 8
[0-9]------匹配一个 0-9 的数字
[0-9]*------匹配任意长度的数字字符串
[a-z]------匹配一个 a-z 之间的字符
[a-z]* ------匹配任意长度的字母字符串
[a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符
[atguigu@hadoop101 shells]$ cat /etc/passwd | grep r[a,b,c]*t
会匹配 rt,rat, rbt, rabt, rbact,rabccbaaacbt 等等所有行

[0-9]后面规定重复出现9次 ,实例
echo "15910100009" | grep -E ^1[34567][0-9]{9}$


6)特殊字符:\
\ 表示转义,并不会单独使用。

ps (进程状态 process-state )(top是动态监控进程的指令)#

杀死进程 
kill 【-9 强制】 【pid号】
ps 
【-a】前端进程
【-x】后台进程
【-u】用户经常

【-e】显示所有进程
【-f】全部格式显示


netstat -ant 查看服务,端口号,协议#

netstat -anp | grep 3306
【-an】顺序输出
【-p】显示哪个在调用


systemctl (服务,开机自启)#

# 服务启动/重启...
systemctl start/stop/restart/status

# 设置开机自启
systemctl enable 服务d

# 关闭开机自启
systemctl disable 服务d

# 查看服务是否开机自启
systemctl is-enabled 服务d

防火墙开端口#

# 打开/关闭端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --remove-port=3306/tcp

# 重新加载防火墙
firewall-cmd --reload

# 查看端口是否开放
firewall-cmd --query-port=3306/tcp

软件安装#

# 查询是否安装
rpm -qi firefox

# 查看软件文件
rpm -ql firefox

# rpm安装(install,verbose提示,hash进度条)
rpm -ivh 【rpm包】

# 卸载rpm包(erase抹除)
rpm -e 【rpm软件】
rpm -e --nodeps 【rpm软件】

环境变量配置#

# 文件拷贝解压在 /opt/jdk
tar -zxvf jdk-8u..tar.gz

# 剪切到 /usr/local/java
mv /opt/jdk/jdk-8u.. /usr/local/java

# 打开环境变量配置文件
vim /etc/profile

# 在profile配置文件最后加入
export PATH=/user/local/java/bin:$PATH

# 重启profile配置文件
source /etc/profile


磁盘:#

查看磁盘可用空间:disk free

df -h

查看当前目录占用空间: disk usage

du -h
【--max-depth=1】子目录深度

shell#

shell文件后缀#

xxx.sh

shell编程的的开头#

#!/bin/bash

shell的执行方式#

#三种方式
sh /root/hello.sh
source /root/hello.sh
. /root/hello.sh

#直接文件打开
chmod 755 hello.sh

输入#

实例

read -t 10 -p '请输入您的名字' name
echo “welcome, $name”

-t 等待时间
-p 提示信息
name 接收名字


变量#

系统变量#

如:$HOME, $PWD, $SHELL, $USER
查看全局变量用 env
查看局部变量用 set


自定义变量(脚本中)#

定义: NAME="Jan" // 注意=不要空格
调用: echo "$NAME"
删除: unset NAME

定义只读变量 readonly NAME = "haha"


环境变量 (/etc/profile)#

1) export PATH="$PATH:/root/aaa" 保存
2) source /etc/profile


调用脚本时的参数#

传参方法:sh ./xxx.sh 【参数1】 【参数2】

$n     $0指当前脚本名字  ,$1指第一个参数, $2指第二个参数...

$#     计算调用shell脚本时,总共传来了几个参数

$*     以字符串类型列出参数
$@     以数组类型列出参数

$?     看返回的值

运算#

1) SUM=$((1+2))
2) SUM=$[1+2]
echo $SUN

条件判断#

#判断 [ condition ] , 前后必须有空格
[ 8 -gt 2 ]
[ -r 文件 ]
# 输入 echo $? 查看结果如果为0即true

# 判断数值
-eq 等于(equal)
-ne 不等于(not equal)
-lt 小于(less than)
-gt 大于(greater than)

# 判断文件
-r 有无读权限 ...

-e 文件存在(existence)
-f 是否为文件,是否存在(file)
-d 是否为目录,是否存在(directory)


流程控制#

分支#

# 第一种方法
if [ $a -eq 18 ];then echo ok;elif [ $a -lt 17 ];then echo 'small';else echo 'better';fi

# 第二种方法
#!/bin/bash

if [ $a -eq 18 ]
  then
    echo ok
elif [ $a -lt 17 ]
  then
    echo 'small'
else
  echo 'better'
fi

循环#

sum=0;for((i=1;i<=100;i++));do let sum+=i;done;echo $sum

sum=0;for i in {1..100};do let sum+=i;done;echo $sum

sum=0;i=1;while((i<=100));do let sum+=i;let i++;done;echo $sum

函数#

#!/bin/bash
function sum()
  {
  s=0
  s=$[$1+$2]
  echo "$s"
  }

basename 与 dirname#

[atguigu@hadoop101 shells]$ basename /home/atguigu/banzhang.txt
banzhang.txt

[atguigu@hadoop101 ~]$ dirname /home/atguigu/banzhang.txt
/home/atguigu

备份数据库(定时打包数据库tar.gz)#



路径变成只有文件名 或 只有路径#

ubuntu#

创建用户只有$符: usermod -s /bin/bash <需要更改bash的用户名>


日志#

  • rsyslogd服务启动后, 生成各种系统日志

自定义日志#

1)定义

2)查看日志

日志轮替策略#

查看内存日志 journalctl#


ubuntu apt下载源更改#


安装webmin#

安装宝塔#

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

忘记密码,用单用户模式修改密码#

posted @   1502god  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
-->
点击右上角即可分享
微信分享提示
主题色彩