韩顺平-linux笔记

首先:一切皆文件

介绍目录

/:根目录

/bin:存放最经常使用的命令

/lib:系统开机所需要的最基本的动态连接共享库

/home:普通用户的主目录

/root:系统管理的用户主目录

/etc:系统管理所需要的配置文件和子目录

/usr:用户的很多应用程序和文件都放在这个目录下,相当于progrem files

/boot:存放启动linux时使用的一些核心文件

/tmp:存放一些临时文件的

/dev:类似设备管理器,把所有的硬件用文件的形式存储

/mnt:让用户临时挂载别的文件系统

/usr/local:给另一个主机额外安装软件所安装的目录

/var:存放着在不断扩充着的东西(日志文件)

vi与vim的使用

vim hello.java 进入一般模式

输入i 进行插入模式

输入esc退出插入模式,再输入 :(或者/)进入命令行模式 , :wq保存并退出 :q退出

yy:复制 (一般模式)

5yy:并粘贴 p (一般模式)

/关键字 :回车再进行查找,n查找下一个 (输入/进入命令行下)

:set nu   :进入命令行,然后设置出行号 (:set nonu)

G :最末行 gg:首行(一般模式)

u:撤销动作 (一般模式)

20 shift g :跳转到具体行(一般模式下)

关机重启

sync:把内存的数据同步到磁盘

shutdown -h now :立刻关机

reboot :重启

su - root :切换身份(root)

logout :退出用户

useradd 用户名:添加用户

passwd 用户名 :设置密码

userdel 用户名 :删除用户(不删除家目录)

who am i :查看登录用户信息

groupadd:添加组别

id 用户:查看用户id

文件目录指令

绝对路径:比较长,从根目录开始 pwd 显示当前位置

相对路径:从所在位置开始 

cd : 进入下一个目录 

cd.. :回到上一级

cd ~ :回到家目录

mkdir 【目录】:创建存在一级目录

mkdir -p 【目录】:创建不存在的一级目录

rmdir :删除空目录

rm -rf :删除目录非空(小心谨慎)-r 递归删除整个文件夹 -f 强制删除不提示

touch :创建空文件 (touch hello.txt)

cp:将/home/hello.txt 拷贝到 /home/bbb目录下 cp hello.txt/home/bbb

递归复制整个文件夹 举例,比如将/home/bbb整个目录,拷贝到/opt  cp -r /home/bbb /opt

mv:mv old new (同一个目录相当于重命名)

mv pig.txt /root/ 从家目录移动根目录  mv pig.txt /root/cow.txt 移动并重命名

cat -n :查看文件并显示行号

less : 查看部分文件(当文件比较大)

more conf.log : 当前屏显示(或者在后面 | more)

echo:输出内容到控制台 echo $PATH 查看环境变量

head:head -n 5 :查看文件的前5行,默认显示10行 -f 实时监控文件的所有更新

tail :查看文件中尾部内容同head

>:覆盖  >>:追加

In -s/root /home/myroot 在/home目录先创建一个软链接myroot,链接到/root目录(删除软链接 rm

/home/myroot)

history :查看曾经执行过的命令(history 10 :查看最近10条,!5 :执行历史编号为5的指令)

时间日期类

date:显示当前时间信息

date "+%Y-%m-%d %H:%M:%S"(功能描述:显示当前时间年月日时分秒)注意区分大小写

date "+%Y-%m-%d"(功能描述:显示当前时间年月日)

设置系统当前时间:date -s " 2020-11-03 20:02:10"(比如设置成 2020-11-03 20:02:10)

cal:显示本月日历(cal 2020 显示2020的所有月份)

搜索查看类

find指令

find /home -name hello.txt:根据名称查找/home目录下的hello.txt文件

find / -size +200M 查看整个linux系统下大于200M的文件(+n大于, -n小于 n等于,单位有 k,M,G)

cat /home/hello.txt | grep -n "yes" :在hello.txt文件中,查找“yes”所在行,并且显示行号。

grep -n "yes" /home/hello.txt

压缩和解压

zip -r myhome.zip /home/ : 将home目录及其包含的文件和子文件夹都压缩

unzip -d /opt/tmp /home/myhome.zip 将myhome.zip解压到/opt/tmp目录下

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt:将 /home/pig.txt和/home/cat.txt压缩成pc.tar.gz

tar -zcvf myhome.ta.gz /home/ 将/home的文件夹压缩成myhome.tar.gz

tar -zxvf pc.tar.gz:解压到当前文件

tar -zxvf /home/myhome.tar.gz -C /opt/tmp2 :将myhome.tar.gz 解压到/opt/tmp2目录下

组管理

chown tom apple.txt :修改文件所有者(后面为文件加路径地址)

groupadd fox :创建一个组fox

useradd -g monster fox:创建一个用户fox并放入到monster组中

ls :可以查看具体所在组

chgrp fruit orange.txt:修改文件所在组

usermod -g 新组名 用户名

usermod -d 目录名 用户名

权限

ls进行查看 -rwxrw-r-- l root root 

0:文件类型(l:链接,d:目录,c:如鼠标,b:如硬盘)

1-3:所有者

4-6:所属组

7-9其他组

chmod u=rwx,g=rx,o=x ,文件/目录名

chmod o+w 文件/目录名

chmod a-x 文件/目录名

chmod 755/home/abc.txt

crond 调度

crontab -e 创建

crontab -r 终止调度

crontab -l 列出任务调度

磁盘情况查询

df -h :查看磁盘使用情况,是否需要清理或者增加硬盘

du -h  --max-depth=1 /opt :查询/opt目录的磁盘占用情况,深度为1

ps -ef检测正在运行的进程

ls -l /opt | grep "^-" | wc -l : 统计/opt文件夹下文件的个数

主机名解析机制分析:首先检查浏览器缓存中是否有解析IP地址-操作系统中的DNS缓存(本地检查)-检查系统中hosts文件-域名服务DNS检查即域名数据库

进程管理

程序是静态代码-运行了就是进程-线程由进程创建,是进程的实体

ps -aux 显示进程所有

ps -aux | grep sshd : 看看有没有sshd的服务

ps -ef检测正在运行的进程 (与上面一样功能,内容格式不一样)

systemctl start sshd.server :启动某个服务

killall gedit :终止多个gedit

kill -9 :强制杀掉一个终端

服务管理

server 服务名 [start | stop | restart | reload | status] 

rpm包管理

rpm:互联网下载包的打包安装工具

rpm -qa |grep firefox :查看当前系统是否安装了firefox

rpm -e firefox :删除软件包

rpm -ivh  RPM包全路径名 

shell编程

脚本以#!/bin/bash开头

A='date' 反引号,运行里面的命令,并吧结果返回给变量A

A=$(date)等价于反引号

shell注释::<<!   !

$0 第一个参数(执行的文件名) $1 第二个参数 $2 第三个参数 $# 参数个数

$ 代表为变量

案例:条件判断(空格要求严格,注意看关键字颜色是否有变化)

if [ "ok" = "ok" ]

then

        echo "equal"

fi

if [ 23 -ge 22 ]

then 

        echo "大于“ 

fi

目录中的文件是否存在

if [ -f /root/shcode/aaa.txt ]

then

        echo "存在”

fi

案例:当命令行参数是1时,输出周一,是2时就输出周二,其他情况输出“other”

case $1 in

"1")

echo "周一"

;;

"2")

echo "周二“

;;

*)

echo "other"

;;

esac

$*于$@的区别 就是 $*:输入的参数为一个整体

案例:从命令行输入一个属n,统计从1+。。。+n的值是多少?

SUM=0

i=0

for(( i=1; i<=$1; i++))

do

        SUM=$[$SUM+$1]

done

echo "总和SUM=$SUM"

案例:read读取控制台输入 (read -t -p 十秒内输入)

read -p "请输入一个数NUM1=“ NUM1

echo "你输入了一个数NUM1=$NUM1”

案例:系统函数

basename  输出文件名(在加个文件后缀,则去除后缀)dirname :返回完整路径

mysql -u root -p :进入数据库

语句:show databases; use hspedu; show tables; select * from myoder;

编写:备份文件 mysql_db_backup.sh

chmod u+x mysql_db_backup.sh (加了权限后可以直接输入绝对路径进行执行,或者相对路径./)

或者 sh mysql_db_backup.sh 执行文件

综合案例:

需求:

1.每天凌晨2:30备份,数据库hspedu到/data/backup/db

2.备份开始和备份结束能够给出相应的提示信息

3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如2021-03-12_230101.tar.gz

4.在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除

#!/bin/bash

#备份目录

BACKUP=/data/backup/db

#当前时间

DATETIME=$(date +%Y-%m-%d_%H%M%S)

echo $DATETIME

#数据库地址

HOST=localhost

#数据库用户名

DB_USER=root

#数据库密码

DB_PW=hspedu100

#备份的数据库名

DATABASE=hspedu

#创建备份目录,如果不存在,就创建(代码间注意空格)

[ ! -d "${BACKUP}/${DATETIME}” ] && mkdir -p "${BACKUP}/${DATETIME}"

#备份数据库(gzip压缩 gunzip解压)

mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R  --databases ${DATABASE} | gzip >${BACKUP}/${DATETIME}/${DATETIME}.sql.gz

#将文件处理成 tar.gz

cd ${BACKUP}

tar -zcvf $DATETIME.tar.gz ${DATETIME}

#删除对应的备份目录

rm -rf ${BACKUP}/ ${DATETIME}

#删除十天前的备份文件

find  ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;

echo "备份数据库${BACKUP} 成功"

crond 

crontab -e :创建定时任务

30 2 * * * /usr/sbin/mysql_db_backup.sh

crontab -l :查看定时任务

乌班图

sudo apt-get install openssh-server :在当前linux上安装了SSH服务端和客户端

service sshd restart :启动了sshd服务,会监听端口22

从一台linux系统远程登陆另一台linux系统

shh 用户名@IP

登出:exit或者logout

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值