Linux学习笔记

Linux 需要掌握的一些命令 | 菜鸟教程

Linux 命令大全 | 菜鸟教程

Linux命令大全(手册) – 真正好用的Linux命令在线查询网站

【干货】linux系统运维教程,【收藏】linux系统运维攻略 - 知乎

Linux 系统目录结构介绍_WartenSIEl的博客-CSDN博客_linux目录结构

su和sudo的区别_BigTalking的博客-CSDN博客_su sudo

Linux命令之nohup详解 - 掘金 (juejin.cn)

su -等同于su -l、su -l root :以root登录,后面加其它用户名则以切换到指定用户

sudo 当前用户以root权限执行指定命令,需要有相关授权

cd /usr 进入到根目录下的usr目录(开头加:/根目录、./当前目录、../上级目录)

ls -al 显示所有文件的详细信息

du -h 显示目录大小(所有层级目录)

diff -r -q 目录1 目录2   对方两个目录文件是否一致

du -h –max-depth=1 只显示1层目录大小(1层级)

lsof -i 查看所有网络连接,后面空格加 :80,查看包含80端口的连接

ls -al /proc/进程ID 查看指定进程ID详细信息
结果中,cwd符号链接的是进程运行目录(用户启动进程当时所在目录),exe符号连接就是执行程序的绝对路径;

ps -ef|grep java 查找java进程

kill -9 进程ID 杀掉指定进程( [killall -9 进程名称]、[pkill -9 进程名称] 杀掉所有指定名称的进程)

df -Th 查看磁盘使用情况

history 查看历史命令 (history -c 清除历史命令,history -w将当前历史命令状态写入.bash_history,两个同时执行将彻底清除历史命令)

systemctl start mysqld(启动服务)
systemctl enable mysqld(设置开机启动)
systemctl daemon-reload(应用设置)

systemctl stop mysqld(停止服务)

systemctl status mysqld(服务状态)

firewall-cmd --permanent --add-port=3306/tcp 永久放行3306-tcp端口访问

shutdown now(现在关机)

shutdown -r now(系统重启)

登录次数限制

 vi  /etc/pam.d/login    //在#%PAM-1.0下面添加一行
#%PAM-1.0
auth  required  pam_tally2.so  onerr=fail deny=5 unlock_time=60 even_deny_root root_unlock_time=60
vi  /etc/pam.d/sshd
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=300

/etc/pam.d/login中配置只在本地文本终端上做限制
/etc/pam.d/kde在配置时在kde图形界面调用时限制
/etc/pam.d/sshd中配置时在通过ssh连接时做限制
/etc/pam.d/system-auth中配置凡是调用 system-auth 文件的服务,都会生效
 

查看用户最近连续登录失败次数
pam_tally2 -u root

禁止某个IP 登录:
vim /etc/hosts.deny    在最后面添加:sshd:需要封禁的ip:deny 例如 sshd:10.123.15.120:deny

last 查看最近登录成功日志

lastb 查看最近登录失败日志

pam_tally2身份验证模块_51CTO博客_pam_tally2解锁用户命令

Linux系统的PAM模块认证文件含义说明总结-CSDN博客

Liunx中文件的三个时间atime,mtime,ctime详细说明与使用场景 - jack_Meng - 博客园 (cnblogs.com)

find命令用法:https://www.escapelife.site/posts/a4ae3007.html

find / -iname "java" 从根目录开始查找名为java的文件(忽略大小写),搜索关键词必须带引号,曾经试过不带引号搜索结果异常(使用模糊查询时只显示当前目录文件,没显示子目录下文件,跳到上级目录同样查询又正常)

-amin -n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime -n : 在过去 n 天内被读取过的文件

-cmin -n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime -n : 在过去 n 天内创建的文件

-mtime -n : 在过去 n 天内修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 等于 n 单位(这里是四舍五入后的数值,ls -l --block-size=k)

-size +n :文件大小 大于 n 单位(这里是四舍五入后的数值)

-size -n :文件大小 小于 n 单位(这里是四舍五入后的数值)

注意,这里的大小是向上舍入后的数值(可用ls -l --block-size=k、ls -l --block-size=M等查看),比如:0.1K=1K、1.8K=2K,5.2M=6M。

【find . -size -1k】等于【find . -size 0k】表示0字节的空文件,size=0字节

【find . -size 1k】表示1024字节以内非0字节的文件,0字节<size<=1024字节

【find . -size +1k】表示1024字节以上的文件,1024字节<size

使用find命令来搜索大于10MB但小于20MB的文件:# find . -size +10M -size -20M

-type c : 文件类型是 c 的文件,类型:

  • d: 目录
  • c: 字型装置文件
  • b: 区块装置文件
  • p: 具名贮列
  • f: 一般文件
  • l: 符号连结
  • s: socket

grep -rni "java" /home :搜索/home下包含“java”内容的文件,r递归、n显示行号、i忽略大小写

grep "^[^#]" 文件名 :显示文件中不是以‘#’开头的行字符。

  • ^    #锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
    $    #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
    []   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
    [^]  #匹配一个不在指定范围内的字符
    .    #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
    *    #匹配零个或多个先前字符,如:'.*'代表任意字符。
ls -l | grep "^-" | wc -l   统计目录下的文件个数(不包括子目录)
ls -lR | grep "^-" | wc -l  统计目录下的文件个数(包括子目录)
ls -lR | grep "^d" | wc -l  查看目录下文件夹(目录)的数量(包括子目录)

Linux统计文件夹下的文件数目 - ToDarcy - 博客园 (cnblogs.com)

解压:unzip FileName.zip
压缩:zip -r FileName.zip DirName
# zip保留源文件,-r表示递归处理目录下所有文件
查看包:zipinfo FileName.zip

解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
压缩文件夹下所有文件(每个文件单独压缩为一个文件):gzip -r DirName 
# gzip压缩后删除源文件,且单个文件压缩为单个包,不建议直接使用,可使用tar带-z参数使用。

解包:tar -xvf FileName.tar
打包:tar -cvf FileName.tar DirName
查看包:tar -tvf FileName.tar
# x解包,c打包,t查看包文件,v显示处理的文件信息,f此参数作为结尾(通常必选)

解压:tar -zxvf FileName.tar.gz
压缩:tar -zcvf FileName.tar.gz DirName
# z表示调用gzip进行压缩

war项目包用jar,如:jar -xf xx.war 解压war文件到目前目录(不新建包的根目录)

文件编辑

touch 文件名 : 新建一个文件
file 文件名 :识别文件类型

cp source dest : 复制文件
cp -r sourceDir dest : 复制目录(-r 递归)
cp -pr sourceDir dest : 复制目录并保留源文件属性(-p 保留源文件属性)
mkdir dir : 新建目录
mv source dest : 移动/重命名 文件或目录
rm name :删除文件或目录(-f 不提示,目录要用-r指定递归)

chmod ugo+r fileName、chmod a+r   # 所有人添加可读
chmod o-w fileName   # 其它人解除写权限
chmod g=x fileName   # 组成员设置为可执行
chmod -R 751 dirName   # 对目录及目录下所有文件设为拥有者[读-写-执行]、组成员[读-执行]、其它[执行](读4、写2、执行1)

vi 文件名  : 打开文件(按i进入编辑模式,按ESC返回命令模式,命令模式按:后再输q退出/w保存文件)

查看文件内容的命令

cat  由第一行开始显示档案内容 
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写! 
more 一页一页的显示档案内容 
less 与 more 类似,但是比 more 更好的是,他可以往前翻页! 
head 只看头几行 
tail 只看尾巴几行(不断刷新内容显示)
nl   显示的时候,顺道输出 行号! 
od   以二进制的方式读取档案内容! 

linux 查看文件内容的命令_yuyongpeng的博客-CSDN博客_linux查看文件内容命令

查看指定进程ID详细信息:ls -al /proc/进程ID

结果中,cwd符号链接的是进程运行目录(用户启动进程当时所在目录),exe符号连接就是执行程序的绝对路径;

lsof查看网络连接信息
语法: lsof -i [4|6][protocol][@hostname|hostaddr][:service|port]
如:
lsof -i
查看所有连接

lsof -i 6
查看IPV6连接

lsof -i 4TCP
查看IPV4的TCP连接

lsof -i @172.10.10.1
查看本地或远端为172.10.10.1的连接

lsof -i :80
查看本地或远端连接的端口是80的连接

lsof -i -sTCP:LISTEN 或 lsof -i|grep LISTEN
查看TCP连接状态为LISTEN的连接

netstat查看网络连接信息

点击查看命令详解

查看80端口活动连接数:netstat -na | grep ESTAB | grep 80 | wc -l

-na a显示所有,n拒绝别名;grep 筛选的字符;wc统计命令,-l表示统计行数

WC命令说明

rpm:安装本地包,yum:安装网络服务器上的包,yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系。

【RPM包的命名规范】name-version-release.os.arch.rpm
name:程序名称。
version:程序版本号。
release(发行号):用于标识RPM包本身的发行号,与源程序的release号无关。
os:即说明RPM包支持的操作系统版本。如el6(即rhel6)、centos6、el5、suse11。
arch:主机平台。如i686、x86_64、amd64、ppc(power-pc)、noarch(即不依赖平台)

RPM常用选项:
-i:表示安装。
-v, -vv, -vvv:表示详细信息。
-h:以"#"号显示安装进度。
-q:查询指定包名。
-e:卸载指定包名。
-U:升级软件,若未软件尚未安装,则安装软件。
-F:升级软件。
-V:对RPM包进行验证。

安装RPM包,命令格式:rpm -i /PATH/TO/RPM_FILE
一般组合起来使用,命令格式:rpm -ivh PATH/TO/RPM_FILE

rpm -q:查询某一个RPM包是否已安装
rpm -qi:查询某一个RPM包的详细信息
rpm -ql:列出某RPM包中所包含的文件。
rpm -qf:查询某文件是哪个RPM包生成的。
rpm -qa:列出当前系统所有已安装的包

rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum解决这些问题。Yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系。
常用Yum命令(yum需要联网,向yum仓库获取数据信息)
  yum list:查询所有可用软件包列表
  yum search 关键字:搜索服务器上所有和关键字相关的包
  yum -y install 包名(yum安装只需包名):安装
    -install:安装
    -y:自动输入yes
  yum -y update 包名:升级
  yum -y remove 包名:卸载(不会检查依赖,不建议使用)
yum软件组管理命令
  yum grouplist:列出所有可用的软件组列表
  yum groupinstall 软件组名:安装指定软件组
  yum groupremove 软件组名:卸载指定软件组

例如MySQL的安装一般需要先下载rpm资源包安装,然后再用yum安装软件:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server

文件下载

https://www.jb51.net/article/125058.htm

wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz:下载指定文件到当前目录
wget -O wordpress.tar.gz  http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz:下载文件并指定保存的文件名(不指定文件名,则以链接最后的/符号后的字符串作为文件名)

wget --user=name --password=pwd http://dg.fh0769.cn/download/tt.txt 使用密码验证下载

Linux curl命令最全详解_Angel_CG的博客-CSDN博客_curl命令

curl http://www.linux.com >> linux.html #保存网页
curl -T dodo1.JPG -u 用户名:密码 ftp://www.linux.com/img/ #ftp上传文件
curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG #ftp下载文件
curl -O http://www.linux.com/{hello,bb}/dodo[1-5].JPG
#{}通配符表示匹配里面多项,[]通配符表示数字序号,分别从上面两个链接各自下载5个jpg文件(文件名重复,第一次下载会被覆盖)
curl -o #1_#2.JPG http://www.linux.com/{hello,bb}/dodo[1-5].JPG
#自动重命名防止被覆盖,下载后文件名hello_dodo1.jpg,bb_dodo1.jpg等等

scp username@servername:/path/filename /var/www/local_dir:从远程计算机下载文件到本地目录
scp /path/filename username@servername:/path:将本地文件上传到远程计算机指定目录
scp -r username@servername:/var/www/remote_dir /var/www/local_dir:下传整个目录
scp  -r local_dir username@servername:remote_dir:上传整个目录 

 网络抓包(网上有详细使用介绍):

tcpdump  -i enp4s0 -s 0 tcp port 8080 -c 500 -w /www_data/loghttp2.cap

-i enp4s0为网络接口

-s 0表示不限包大小(默认68字节)

-c 500 接收500个包之后退出(不加就一直接收,可Ctrl+c手动退出)

-w 保存数据的文件(数据以二进制形式保存,可用cat查看里面字符信息)

防火墙配置

建议优先使用firewall-cmd命令,但部分功能还得使用iptables,如管理对外访问的连接可使用:iptables -A OUTPUT -p tcp -d www.baidu.com --dport 80 -j DROP(禁止本机访问百度网址的80端口)

iptables和firewalld的介绍与区别_Bilise的博客-CSDN博客_iptables和firewalld区别

Linux命令之firewall-cmd_zhf_sy的博客-CSDN博客_firewall-cmd

Linux ❉ iptables详解_wangjie722703的博客-CSDN博客_iptables linux

开机启动配置

linux开机启动的配置 - 房东家的猫 - 博客园 (cnblogs.com)

如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可

默认是不执行的,添加好相关命令后需要给它授权:chmod +x /etc/rc.d/rc.local

建议使用chkconfig,可定义启动、退出、重启时的事务处理,相对复杂一点,参考:

[Linux]chkconfig命令详解-CSDN博客

解压安装的tomcat, 使用chkconfig命令让tomcat 随机启动,tomcat 变为系统服务 - phpdragon - 博客园 (cnblogs.com)

chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

--level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

如何增加一个服务:

1.服务脚本必须存放在/etc/rc.d/init.d/目录下;增加脚本的可执行权限
chmod +x  /etc/rc.d/init.d/程序名.sh

程序前面务必添加如下三行代码,否侧会提示chkconfig不支持。
#!/bin/sh                          告诉系统使用的shell,所以的shell脚本都是这样
#chkconfig: 35 20 80               分别代表运行级别(对应level),启动优先权,关闭优先权。(优选权数字越大表示优选权越低)【此行代码必须】
#description: tomcat server        程序描述,可自己随便发挥!【此行代码必须】


2.chkconfig --add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;


chkconfig serviceName on        # 启用服务,各等级为on,“各等级”包括2、3、4、5等级
chkconfig serviceName off       # 禁用服务

 Linux系统安装

http://www.zhuangjiba.com/jiaocheng/26801.html
https://www.php.cn/centos/472898.html

1.下载linux系统镜像文件
2.用UltraISO制作安装盘(可以使用U盘)

用UltraISO打开linux镜像,选择“启动”菜单下“写入硬盘映像”到U盘,然后电脑从U盘启动安装系统。

Install or upgrade an existing system 安装或升级现有的系统
install system with basic video driver 安装过程中采用基本的显卡驱动
Rescue installed system 进入系统修复模式
Boot from local drive 退出安装从硬盘启动
Memory test 内存检测

CentOS的软件安装选择(SOFTWARE SELECTION)
不同选项内置的软件模块不一样,如果没想好特定要求可以选“Minimal install” 或者 “Basic Web Server”,后续如果有其它需要可以自行扩展安装所要软件。

INSTALLATION DESTINATION 安装位置---一般在此进行硬盘分区

选择I will configure partitioning 自定义分区,点Done进行分区

xfs是一种高性能的日志文件系统,在2002年被移植到Linux内核上,xfs特别擅长处理大文件,同时提供大型的数据传输。
Ext4 文件系统是扩展文件系统的最新版本。Ext4 已经存在了很长时间,并且被证明是可靠和稳定的。建议日常使用。万一停电,ext4 很有可能会确保您保存的数据安全。
Ext4 专注于高性能和可扩展性。这是一个坚如磐石的选择,因为它已经存在很长时间了,它带来了多年来的系统测试和错误修复。不管其所有功能如何,它都不支持重复数据删除、压缩或加密。
Btrfs 是一个现代文件系统,可以处理多达 16 倍于 Ext4 的数据。这种改进特别重要,因为 Linux 现在在企业实体中使用。Btrfs 有很多上面提到的很好的特性,例如 Copy-on-Write、快照、校验和和复制。Btrfs 正在快速增长,但仍被认为不稳定。
到目前为止,ext4 似乎是桌面系统上更好的选择,因为它是默认文件系统,并且在传输文件时比 btrfs 更快。btrfs 文件系统值得研究,但要在桌面 Linux 上完全取代 ext4 可能需要几年时间。 
CentOS7默认文件系统是xfs,ext4受限制于磁盘结构和兼容问题,可扩展性确实不如xfs。
【结论】个人用户建议Ext4,大型企业管理建议Btrfs、xfs

LVM是逻辑卷,可以包含多个物理分区

Linux系统最简单的分区方案:
1、分/boot区,给200M,/boot放启动文件。
2、分交换分区(交换空间)swap,看内存总大小,如果内存足够大,这个空间就要设置太大了。如果内存小于2G。那么这个空间设置成内存的2倍大小。
3、如果有其它需要可以自行添加其它挂载点(Add mount point),然后分配空间
4、其它所有空间给/(根分区)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzl_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值