一。基础思想 一切皆文件。 两条权限原则: 权限分组原则权限最小原则 su是切换用户,而sudo则是用root权限执行某操作( 普通用户+sudo=安全) linux目录 系统只存在一颗文件树、从==/==开始,所有的文件都
一切皆文件。
两条权限原则:
su是切换用户,而sudo则是用root权限执行某操作( 普通用户+sudo=安全)
linux目录
没有返回值就是成功:执行Linux命令,无返回值即成功,有反回值有可能成功也有可能失败。
关机前需要先同步数据
synC#同步数据 shutdown -h now #立即关机shutdown -h 1#1分钟之后关闭计算机 reboot#立即重启
在众多shell中,Linux系统中的文件系统因为不同的类别,颜色都是不一样的。
d:目录 -:文件 l:链接
r4、w2、x1:读写执行分别对应二进制111。
记住、用户目录 /etc/passwd
只有当要修改文件时才需要vim,其余时cat即可、或者head、less。
ping百度检查设备是否联网
ping baidu.com
tab提示很好用,单机或者双击的规则我已领悟。
-h在Linux中是非常重要的一个参数,其在绝大多数情况下都表示显示计量单位,即可以以人可以读懂的方式去显示。如:
ls -lhdf -h#查看磁盘使用情况du -h#查看指定的目录(默认是当前目录)下的文件占用空间情况
清空或者截断文件
> a.txt或者echo "" > a.txt
日常使用which来查询指令出处。
第三方软件安装应所在位置:/opt
ls指令
ls -alh#隐藏文件、长列表、方便阅读ls -R #递归子目录ls -r#反序显示ls -S#Size,以文件大小顺序输出ls -t#按修改时间'注意-r:reverse-R:Recursive,常用于连续递归子目录
mkdir递归创建目录
mkdir -p demo/{1..100}
rmdir:仅能删除非空的目录。
rm详解
'技巧'rm -rf /tmp#删除这个目录rm -rf /tmproot**:注意区分这两个目录,它们不一样!
Bash说明
wildcard通配符
1. *:几乎全部,只不能匹配隐藏文件。2. ?:单个字符3. '匹配隐藏文件:.[!.]*
单引号、双引号规则:在单引号中,所有的转义字符会失效。
/dev/null垃圾桶
ls / &> /dev/null
Linux自带英文字典
"里面有47万个单词,一行一个。可用grep搜索"[root@VM-4-3-Centos dict]$ cat words | wc -l479828"填字游戏"[root@VM-4-3-centos dict]$ cat words | grep '^..j.r$'MajORMajor
系统字符集查看
"查看字符集的两种方法"1. locale2. echo $LANG
重定向标准错误
#仅标准输出,两种写法ls /aaa > a.txtls /aaa 1> a.txt#仅重定向错误ls sasa 2> a.txt#同时输出,两种写法ls sasa > a.txt 2>&1ls sasa &> a.txt
系统版本信息查看
[root@VM-4-3-centos]~# cat /etc/os-releaseNAME="CentOS Linux"VERSioN="7 (Core)"ID="centos"ID_LIKE="rhel fedora"VERSION_ID="7"PRETTY_NAME="CentOS Linux 7 (Core)"ANSI_COLOR="0;31"CPE_NAME="cpe:/o:centos:centos:7"HOME_URL="https://www.centos.org/"BUG_REPORT_URL="Https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"CENTOS_MANTISBT_PROJECT_VERSION="7"REDHAT_SUPPORT_PRODUCT="centos"REDHAT_SUPPORT_PRODUCT_VERSION="7"
centOS:三种方式
前景说明:
rpm详解
全称:redhat package management,行业标准而不只是redhat的专用;
安装说明:不会帮你自动下载并配置默认环境。
参数说明:
rpm -qa"查询所有已安装软件rpm -q GCc'查询本地是否安装gcc。不比grep好用、容易导致误解、出错'#比 yum -info gcc 详细,更好rpm -qigcc'查询软件包的具体信息,包括安装时间等rpm -qlgcc'查询软件包中的文件rpm -qf 文件路径'查询该份文件隶属于哪一个软件#-e普通卸载,可能会被Linux阻止。卸载失败#--nodeps强制卸载rpm -e --nodeps gcc#-i_install安装,-v_verbose显示信息,-h_hash进度条rpm -ivhrpm包
范例:
#安装jdk1.81. '检查系统中是否存在jdk1.8,两种方式'rpm -qa | grep jdk1-1.'存在即强制卸载'rpm -e --nodeps jdk名称#强制卸载2. '前提:已经拿到jdk的rpm包、并且存储在系统里'rpm -ivh rpm包
yum详解
全称:Yellow dog Updater, Modified
安装说明:会帮你自动下载并配置好所有的默认环境,省心安装。
参数说明:
yum makecache fast'生成目录缓存,方便日后检索。每日系统自动更新一次'yum -y install gcc'安装yum list | grep jdk'列出所有可以安装的软件'yum check-update'检查是否有'yum remove gcc'卸载'yum update'更新所有软件'yum update gcc'更新gcc'# 不如 rpm -qi gcc 详细,没有安装日期等等yum info gcc'查看具体信息'
范例:
yum -y install java-1.8.0-openjdk.x86_64
常用tar,记住即可
tar -zxvf file#解压tar -zcvffile#压缩
其他指令
gzip压缩、gunzip解压
gzip 1.txtgunzip 1.txt.gz
zip与unzip
#安装unzipyum install -y unzip#压缩zip -r a.zip /home/think 压缩递归压缩目录压缩后的文件名将要压缩的目录#解压unzip -d ./usr a.zip解压 指定解压到的文件目录 压缩包文件
tar详解
tape archive,原本功能:磁带存档。
前景说明:只提供打包、解包,没有解压缩功能。
通过调用gzip实现解压缩功能。
后缀:.tar.gz见名思意,先借助tar打包、然后利用gzip进行压缩。
打包和压缩区分:
与其他指令的区别:其他指令只能针对某一文件进行解压缩,而不能同时针对不同地方的多份文件进行压缩。
参数说明:
tar -zxvf a.tar.gz-x'解压文件,extract-c'压缩文件,compress-z#支持gzip解压文件-v#显示操作过程,verbose-f#指定压缩文件(理解:指定要解压的压缩文件名)
查看用户信息
idid 用户名
创建用户、删除用户
useradd -m-G 设置用户组#-m自动创建用户的家目录userdel -r#删除用户并且删除家文件
修改用户密码
passwd#回车设置密码(普通用户权限)passwd 用户名#回车设置用户密码(root权限)passwd -l 用户名#lock,冻结某用户、暂时无法登陆。应用:离职期间
用户切换
su 用户名
退出登录
'退出账号'exit'退出Shell端'loGout
创建、删除用户组(group的操作与useradd这系列的操作类似一样)
groupadd thinkstugroupdel thinkstu
修改用户所在组
usermod -g 组 用户名#修改用户所在组
直接修改文件或者目录属组
chgrp think组 1.txt
为用户赋予新的家目录
'只能用root用户设置,因为在设置的时候该用户不能登录usermod -d 目录名 用户名
思想:
修改文件所有者
chown thinkstu 1.txt
权限排序:文件所有者、文件所在组、其他人。
作用在文件
r :可读取该文件
w :可修改该文件,但是并不能删除该文件。
删除该文件的前提是对该文件所在的目录拥有w写的权限。
x :可执行该程序
作用在目录
Summary
检查环境配置
set:显示Shell变量+环境变量
printenv:只显示环境变量
alias:别名( 以上两者均无法查看别名,只有它可以 )
set#全部printenv#全部alias#全部
常见变量
echo $PATHecho $PS1echo $LANG'输出服务器字符集'
前提说明:Shell程序在启动时会自动加载并读取一系列配置文件(用户登录操作并不会)。
配置文件读取规则
**登录Shell会话:**非图形界面登录。
"全局变量"/etc/profileas"用户变量"1、 2、 3 为只要前面一个存在,则后面的就不会被读取;~/.bash_profile1~/.bash_login2~/.profile3
**非登录Shell会话:**利用图形界面进行登录。
"全局变量"/etc/bash.bashrc"用户变量"~/.bashrc
特例:~/.bashrc
文件,无论启动方式如何,总会被执行( 但其只是用户自定义变量 )。
export命令含义:告诉Shell,该环境变量的内容可用于Shell的子进程。
export PATH=$PATH:~/bin
二月指示:以前我总是修改/etc/profile文件,直到我进去该文件中注意到这句话:
System wide environment and startup programs, for login setup Functions and aliases go in /etc/bashrc It's NOT a good idea to change this file unless you know what you are doing. It's much better to create a custom.sh shell script in /etc/profile.d/ to make custom changes to your environment, as this will prevent the need for merging in future updates. ---------------------------'代码部分'--------------------------------- i in /etc/profile.d1 * * * * ls /tmp >> /tmp/a.txt
#crontab参数-e# edit,编辑crontab定时任务-l# list,查询当前所有的crontab任务-r# removeAll,删除当前用户的所有crontab任务
==*==占位符的说明
项目 | 含义 | 范围 |
---|---|---|
***** * * * * | 一小时当中的第几分钟 | 0-59 |
* ***** * * * | 一天当中的第几小时 | 0-23 |
* * ***** * * | 一月当中的第几天 | 1-31 |
* * * ***** * | 一年当中的第几月 | 1-12 |
* * * * ***** | 一周当中的星期几 | 0-7 0和7均表示星期日 |
特殊符号的说明
符号 | 含义 |
---|---|
* | 代表任何时间 |
, | 代表不连续的时间片段,比如0 6,8,10 * * *表示每天6点整,8点整,10点整都会执行一次 |
- | 代表连续的时间,比如0 6-8 * * *表示每天6/7/8点整均会执行 |
*/n | 首先左边的字符代表0-59分钟均会执行,右边的数字代表每隔1分钟执行一次。比如:*/10每隔十分钟,*/20每隔20分钟。(*/1相当于*****,这点需要注意) |
一些案列
定时任务:利用可执行的sh文件
首先创建一shlle脚本,.sh后缀
然后赋予shell脚本可执行的权限x( 或者使用sh而无需赋权限 )
在crontab里执行任务的地方直接填入shell脚本的全路径。
因为正常的shell脚本也是如此调用执行的
如此一来,主要工作变成了编写Shell脚本;
番外话:
在命令行里同时执行两句不同的指令
cal && date
使用了==&&==
说明:
有时我们并不需要Crontab循环执行任务,我们只需要执行一次任务
at-deamon,at的守护进程atd会以后台模式运行,检测作业队列来运行。每隔60秒回检查一次作业队列,如果作业的运行时间与当前时间相匹配则会执行该作业。
在使用at命令的时候,一定要保证atd进程的启动,否则便无法启动;可以使用相关指令来查看
ps -ef|grep atd
指令是at: 参数。
简单使用
(理解:在 下午五点 + 两天后 执行任务)
atq查看at任务队列queue
[root@think tmp]# atq2 Mon Mar 21 17:00:00 2022 a root
atrm 加编号删除某定时任务
从现在开始30分钟以后执行任务( now 加上时间 )
chattr指令
chattr:change attribute 改变属性
作用:root用户用来 锁定🔐 一些重要文件的操作。
小提示:chattr是/bin目录下的二进制文件。
常用:使用此操作锁住某些文件。如/etc/passwd,然后root( 包括拥有root权限的非root用户 )便无法再使用useradd添加用户,所有用户均不能再修改密码passwd,因为文件已加锁,权限特别高、无法操作。
参数:
chattr +i /etc/passwd#加锁chattr -i /etc/passwd#减锁chattr -V#显示操作过程chattr -R#递归操作
然后可以在系统中通过修改chattr命名,移动到其他目录来防范其他人的恶意操作。
这个指令还有众多参数。
注意别把系统都给自己锁了。。。
—> 我还真的把**根目录/**给锁了,然后操作指令——例如ls、man都能正常使用。
因为==+i==只是加了吧只读锁,并没有能阻止指令的运行。当然所有的文件都已经不能增删改。
chkrootkit检测系统是否存在入侵的工具(需wget自行下载解压安装)
文件很小+C语言编写,wget够用
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
解压、进入、执行命令
tar -zxvf chkrootkit.tar.gzcd chkrootkit-0.55./chkrootkit
nothing found、not infected则表示正常,出现红色则表示检测到入侵
查看系统中所有的用户最后的登录时间
**思想:**因为在日志文件中存在着一文件—lastlog。里面存放的就是系统中所有的用户最后的登录时间,但是因为文件本身为二进制文件不能直接打开,Linux为此还为我们定义了相应的命令,就是同名的lastlog,执行该命令则会去调用查看/var/log/lastlog文件。
如何优化Linux系统 ,说出你的方法
前景提要:
后缀:.sh
单行注释:#
Shell脚本不只一种,常用的为bash。( 井号开头 )
'含义:前缀 + 可执行目录下程序/bin/bash#!/bin/bash
两种启动方式
'1. 赋予可执行权限chmod 777 xxx./xxx'2.不赋予权限,sh执行sh xxx'特例:后台运行脚本./1.sh &
全局变量
#临时export d='lalala'#持久化:写进profile文件里vim /etc/profileexport d='lalala'
'Shell中预留的三个变量'$$#代表当前进程的进程号,即当前整个脚本的进程号$!#后台运行的最后一个进程的进程号$?#返回上一个命令执行结果。为0成功,其他值失败。echo "当前脚本进程号: $$"./1.sh &echo "后台运行的最后一个进程的进程号: $!"echo "上条语句的执行结果(0位成功): $?"
局部变量
#用户自定义变量a='sssss''等号两边不能有空格!echo $a'习惯变量名全部大写!-----------------------------------echo $PATH#系统变量unset a#取消设置readonly b=1#静态变量,无法修改和删除
将命令的返回值赋给变量(两种方式)
1. "反引号"c=`date`2. "美元符号$、小括号"c=$(date)
位置参数
./2.sh 100 200 300
$n#n为数字,表示位置参数具体编号$0#表示命令本身$1/${23}#10及以上参数需要用大括号{}括起来。$*#通配符,表示所有变量$@#通配符,也表示所有变量,不过$@把每个参数区分对待$##表示命令行中的参数个数
sh 2.sh 100 200 300 400#!/bin/bashecho "$0 $1 $2 $3"echo "* -- $*"echo "@ -- $@"echo "个数---$#"
简单运算符
1. '$(( )) ----推荐echo $(($1+$2))2. '$[ ] ----推荐echo $[$1-$2]3. 'expr m - n ----超级不推荐,但要会看(语法转义麻烦)echo `expr $1 \* $2`
暂时跳过后续内容。
暂定
说明:主要谈其在Linux操作系统中与各指令之中的联合调用
grep:global regular expression print
"以下两种式子是等价的"ls -l | grep -c ^d#-c即--count统计ls -l | grep ^d | wc -l
ls 中可以使用
ls -R / *.txt
**^和&**符正确叫法:锚点anchor。
ls | grep '^zip&'"特例 ^& 表示中间什么都没有,可匹配空行"cat a.txt | grep ^&
脱字符作用:排除
[^ab]cd"以上并不会匹配cd两位数,脱字符必须存在一个字符、但不能是a和b""Discover:^符号在 [ ] 外表锚点、在内表脱字符"
连续范围
[a-z0-9A-Z]"直接这样写即可"
有时会因为语言环境( 即字符编码集 )的不同而产生一些奇怪的匹配结果。
1."一般字符集"abcdefg......ABCDEFG...2."个别字符集"aAbBcCdDeEfF"所以此时[a-z]就会处于:大小写均会被匹配到的状态、但是大写少个Z"
扩展正则表达式 与 基本正则表达式
"基本正则表达式:"^ & . [ ] *"扩展正则表达式在此基础上,又添加了几种规则"( ) { } ? + |
传统上,扩展的正则表达式要借助egrep。但是现在不用了。
新办法:grep -E。
"传统" egrep xxx"正解" grep -E xxx
扩展正则表达式详解
"多选扩展"grep -E "*.jpg | *.png"grep -E "(*.jpg | *.png).taz"#多选与其它的组合使用需用小括号( ) 把它括起来"?:匹配前面的模式,0次或1次""\([0-9][0-9]\) ? [0-9][0-9]"#匹配两位数或者四位数
次数匹配
{3} #匹配3次{0,3} #匹配0-3次{,3} #最多三次{2,} #最少两次
==+==匹配1次或者多次
重磅操作
.*".*中 . 表示的是任意字符,* 表示的是0次到任意多次"#所以他两其实是表达的含义不同罢了,本质上表达的意思也不是同一个东西的嘛!"所以我们会经常的看到如下表达形式".*1[0-9]{10}.*
结语:正则表达式充满了奥妙。
前提:系统管理员权限拥有者或者mysql数据库软件的安装者。
思路:
说明:实际上有两种方法,这里只展示一种方法;具体自行百度或者查看mysql手册。
步骤( 版本不同会有些许差别 ):
skip-grant-tables
简介
我们需要检查系统日志,获知系统运行状态。
系统日志文件存放的位置:/var/log。( 首要记住存放日志的目录 )
该目录下的文件
系统常用日志( 标红的重点掌握 )
/var/log/secure文件:存放着一些与登录安全相关的信息,主要为—>比如有人想要登录我们的Linux操作系统,结果失败了等,都会在这里留下痕迹。
日志管理 服务
CentOS7.0——rsyslogd;centos6.0——syslogd
单词理解:Redhat System Log Daemon 红帽系统日志守护进程
用途指明:用来管理Linux系统上的所有日志,比如生成等,全靠它来管理。
重要的rsyslogd配置文件:/etc/rsyslog.conf
通过修改此配置文件,我们也可以自定义系统内存储的日志系统。
存在日志轮替 :每隔一段时间自动删除老旧日志文件。
底层基于crontab定时轮换任务
内存日志journalctl
基于内存,重启即消失。——Tomcat、mysql等的日志文件可能会“隐藏”于此。
journalctl -n 10journalctl -p errjournalctl | grep errorjournalctl -o verbose
ifconifg:network interfaces configuring
tty:teletype 电报交换机
su :Switch User
sudo:super user do
GUI:Graphical User Interface
CLI:Command Line Interface 命令行界面( cli原来是这个意思,Redis里面启动命令就是此! )
bash:Bourne Again Shell
sbin:带s开头的目录范式,system binary
wildcard:通配符
PS1:prompt string 1( 提示字符1 )
fstab:( file system table )文件系统表,/etc/fatab存储了该系统存储设备的挂载情况
ext4:( Fourth Extended File System )第四代扩展文件系统
synopsis:“ 简要、概述 ”
来源地址:https://blog.csdn.net/pipidog008/article/details/128005729
--结束END--
本文标题: Linux笔记
本文链接: https://lsjlt.com/news/376560.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0