递归删除node_modules
find ./ -type d -name ‘node_modules’ -exec rm -rf {} +
运维学习
进程被杀死的几种命令
https://blog.csdn.net/whdxjbw/article/details/80681191
lsof -i:{端口号}
netstat -tunlp|grep {port}
----------------------------------------------
ps -ef | grep {programName}
kill -9 {PID}
# 查看详细内存占用
ps aux -u root | grep {programName}
----------------------------------------------
pgrep命令的p表明了这个命令是专门用于进程查询的grep。
pgrep {programName}
kill -9 {PID}
Linux的五个查找命令
https://blog.csdn.net/jays_/article/details/90172942
mv命令 mv -f websocktt/* ./websock/
mv命令是不能带有-r的。
rsync和scp cp -u 也有类似效果
rsync和scp在文件夹均不存在时,执行时间相差不大,但是文件夹存在的情况下差异很大。原因是scp是复制:若目的地文件不存在则新建,若存在则覆盖。而rsync是同步,比较两边文件是否相同,相同的话,就什么都不做,若存在差异就直接更新。
起到同步的作用时用rsync会快一些,起到复制作用时两者均可(目的地无文件)。视情况来选择rsync或scp。
树明聊运维
http://118.190.209.153:4000/
ps -ef | grep node
kill -9 12312
运维相关的
apt-get install nginx
du -h 文件名字 或者 文件夹的名字
4.0K yantest.md
head -n 3
tail -n 10
***** tail -f 等于--follow=descriptor,根据文件描述进行追踪,当文件改名或删除后,停止追踪。
***** tail -F 等于 --follow=name ==retry,根据文件名字进行追踪,当文件改名或删除后,保持重试,当有新的文件和他同名时,继续追踪
***** tailf 等于tail -f -n 10(tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电
文件书写
cat tt.js > tt2.js
echo fff > aa.js
dd if=./tt2.js of=./tt.js
linux目录
boot 存放启动文件
dev 存放设备文件
etc 存放配置文件
home 普通用户家目录,以/home/$username的方式存放
media 移动存储自动挂载目录,以 /media/$device_name的方式来存放
mnt 手动挂载目录
opt 三方软件安装目录
proc 内存系统文件
root 管理员家目录
run 里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
srv 服务相关数据
sys 系统文件
tmp 临时文件夹
usr 存放库文件、文档、命令、用户数据等
var 日志存放
lib 库文件
linux/unix设计思想:
1) 程序应该小而专一,程序应该尽量的小,且只专注于一件事上,不要开发那些看起来有用但是90%的情况都用不到的特性;
2) 程序不只要考虑性能, 程序的可移植性更重要,shell和perl,python等脚本相比c有更好的移植性;
3) 一切皆文件,尽量使用文本文件来存储数据,避免使用二进制文件,因为文本文件可读性强,且已经有跟多的工具来处理,例如awk,sed,grep等;
4) 让每个程序都成为过滤器,程序需要与其他的工具一起配合使用,管道的支持是非常的重要的;
5) 任何的程序都需要考虑被批处理执行,尽量避免强制的用户交互或界面;
linux命令
type 区分是linux内核命令还是外部命令
linux命令存放路径 echo $PATH
linux基本命令
1)清屏命令:clear 快捷键 ctrl+l
2)帮助命令:man
3)进入文件夹命令: cd
4)列出当前目录内容命令:ls [-a -l -d ]
5)显示主机名:hostname
6)显示日期时间:date [-s %F]
7)显示日历:cal
8)计算器:bc
9)重启命令:reboot shutdown -r init 6
10)注销命令:logout
11)关机命令:halt shutdown -h init 0
12) 显示当前操作系统和机器的信息: uname
13) 显示当前路径: pwd
man帮助命令
数字"1"表示用户命令
数字"2"表示系统调用
数字"3"表示C语言库函数
数字"4"表示设备或特殊文件
数字"5"表示文件格式和规则
数字"6"表示游戏及其他
数字"7"表示宏、包及其他杂项
数字"8"表示系统管理员相关的命令
ls列出当前目录内容命令
uname显示当前操作系统和机器的信息
#uname -a 显示所有信息
#uname -p 显示处理器类型
#uname -m 显示机器硬件信息
#uname -r 显示内核版本
文件的操作
文件的新建:touch filename
文件的改名:mv
文件的查看:ls
文件内容的查看:cat
文件的删除:rm [-r -f]
文件的拷贝:cp [-r -f -p]
文件的移动:mv
文件类型
- 普通文件
d 目录
l 链接文件
b 设备文件
c 字符设备
s 套接字文件
p 管道文件
用户和组
linux用户分类
超级管理员: UID为0 root用户拥有至高无上的命令,root用户不能改名
系统用户:UID小于1000,用于管理服务,一般不允许登陆
普通用户:UID大于或等于1000,权限较小,允许登陆,只能使用bin下命令
hostname 和 hostnamectl set-hostname manage01
不会及时更新,只要就会及时更新
pwd -P
ls -t 根据更改时间进行输出
ls -d
ls -F 显示文件的类型
ls -L 可以看到链接指向的真实大小,而不是链接的大小
账号分类
useradd
usermod 和 userdel
groupadd
groupmod groupdel
passwd gpasswd
密码管理的shadow
ansible
chmod
chmod 命令详解
umask
特殊权限位
除了普通的rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID以及SBIT
特定权限 chattr +a chattr +i
https://blog.51cto.com/13570215/2063084
dnf (yum的取代工具)
https://blog.csdn.net/sinat_34241861/article/details/109453437
ubuntu中安装 yum, 在安装epel
https://medium.com/today-i-solved/how-to-deploy-next-js-on-aws-ec2-with-ssl-https-7980ec6fe8d3
epel
curl elinks 文字浏览器 wget下载
打印打印打印打印打印打印打印打印打印打印
linux目录介绍
boot 存放启动文件
dev 存放设备文件
etc 存放配置文件
home 普通用户家目录,以/home/$username的方式存放
media 移动存储自动挂载目录,以 /media/$device_name的方式来存放
mnt 手动挂载目录
opt 三方软件安装目录
proc 内存系统文件
root 管理员家目录
run 里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
srv 服务相关数据
sys 系统文件
tmp 临时文件夹
usr 存放库文件、文档、命令、用户数据等
var 日志存放
lib 库文件
使用type命令来区分命令是内部还是外部命令
linux命令存放路径 echo $PATH
bin的命令任何人都可以使用,sbin的命令称为特权命令,只能管理用使用
linux基本命令
1)清屏命令:clear 快捷键 ctrl+l
2)帮助命令:man
3)进入文件夹命令: cd
4)列出当前目录内容命令:ls [-a -l -d ]
5)显示主机名:hostname
6)显示日期时间:date [-s %F]
7)显示日历:cal
8)计算器:bc
9)重启命令:reboot shutdown -r init 6
10)注销命令:logout
11)关机命令:halt shutdown -h init 0
12) 显示当前操作系统和机器的信息: uname
13) 显示当前路径: pwd
man帮助命
ls列出当前目录内容命令
ls –F 文件夹后加/显示
ls –x 按水平对齐方式列出档案
ls –m 以”,”隔开档案
ls –t 按时间排序档案
ls –a 显示隐含档案
ls –l 显示详细信息,此命令等同于ll。
ls –d 显示目录而不是其内容
ls -h 以K、M、B的形式进行显示
ls -R
uname显示当前操作系统和机器的信息
head命令 head - 输出文件的开始部分
tail命令 tail -f 输出文件的末尾部分
rmdir命令 -p 递归删除目录
linux用户
a =====用户账号
超级用户 , 普通用户(系统用户,真实用户)
b =====群组账号
超级群组用户,系统群组,用户自定义群组
useradd
useradd -u 1500 -g hello -d /home/hello -s /bin/bash -c “this is a test user” hello天易IT学院
usermod (-L锁定 -U解除锁定)
usedel
组账号管理
groupadd 建立群主
groupmod 修改群主名称
groupdel 删除
passwd gpasswd
权限
chmod命令
chown命令
chgrp命令
linux特殊权限
之前我们提到了特殊权限有三个,这三个特殊权限是在可执行程序运行时影响操作权限的,它们分别是SUID,SGID,sticky-bit位
SUID当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。任意存取该文件拥有者能使用的全部系统资源。如果所有者是 root 的话,那么执行人就有超级用户的特权了。> > SGID当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源;若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时保留文件属性,才能保留原来所属的群组设置。
stickybit对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作;对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作。
chmod u+s file1
chmod g+s file1
chmod o+t file1
chmod 7755 file1
linux隐藏权限
chattr +AaiSd file1
lsattr
acl权限
setfacl -m u:oracle :rw file1
ll 查看的时候多了一个+
getfacl
压缩包和软件包管理
gzip,bzip2,xz
文件夹压缩tar
压缩 tar -czf etc.tar.gz etc
解压 tar -tf etc.tar.gz
rpm => yum => dnf
服务管理
一致运行在后端的,等待其他软件调用,这种程序称为服务。
systemV与init
service servername start/stop/status
指定某一个服务在某一界别运行
查看某一个 服务在哪个级别运行
服务分类
功能分:系统服务,网络服务
启动方法分:独立系统服务,临时服务
httpd atd netstat
手动解决服务的依赖关系
运行级别分类
关机,单用户,无网络的用户,字符模式,保留,图形模式,重启
systemd与unit
从CentOS7开始SystemV,也就是init服务,被效率更高的systemd所替代,而这个systemd对应的管理命令就是systemctl,并且systemctl命令也兼容了service(service命令做为systemd的入口,是systemctl命令的封装)。
systemctl -t help
systemctl start servername
start 启动服务
stop 停止服务
restart 重启服务(没启动的服务会启动)
try-restart 只重启正在运行的服务(没有运行则不启动)
reload 重载配置文件(修改完服务的配置文件后使用)
status 检查服务状态
is-active 检查服务是否已经启动
enable 设置服务开机时启动
disable 设置服务开机时不启动
is-enabled 查看服务是否开机自动启动
mask 屏蔽一个服务
unmask 取消屏蔽
systemctl command --type=xxx --all
list-units 查看所有加载到内存中的单元
list-unit-files 查看系统中所有安装的单元文件(存放在/usr/lib/systemd/system)的启用状态
–type=xxx 单元类型
–all 列出系统中所有加载的,不管状态为何
切换运行级别
systemctl get-default
systemctl set-default multi-user.target 设置默认的
systemctl isolate multi-user.target 切换
systemctl 还提供了几个简单命令
systemctl poweroff 关机
systemctl reboot 重启
systemctl suspend 挂起
systemctl hibernate 休眠
systemctl rescue 进入到救援模式
systemctl emergency 进入到紧急模式
查看服务间的依赖关系
systemctl list-dependencies multi-user.target
服务与端口
cat /etc/services | more
服务名称 端口号/协议 描述
netstat -antulp
进程管理
& 或者ctrl + z都能放到后台
fg bg
jobs
管理后端工作
kill 工作序号
需要注意的是,kill后面如果加的是%num代表杀死后台指定序号的工作,如果不加%代表的是杀死指定进程号的进程,这两个是有区别的
kill -9 序号
killman
进程的查看与管理
ps
ps aux 查看系统后台的所有进程
top
top -d -2 -p 3562
pstree
top详情
进程的优先级
之前我们在查看进程的时候看到两个东西,一个是PRI一个是NI,这两个东西是用来控制进程的优先级,而优先级又决定了CPU先处理谁的数据,后处理谁的数据。
nice -n 10 vim 2&
renice -10 115098
网络管理
nmcli
nmcli -h
nmcli connection -h
nmtui
日志管理
配置文件: /etc/rsyslog.conf
日志文件存放位置: /var/log/
执行文件: /usr/sbin/rsyslogd
日志分析工具 logwatch
web浏览器端分析页面 rsyslog + mariadb + loganalyzer
磁盘管理
术语 磁盘,磁头,磁道,磁柱
衡量磁盘的性能指标
IOPS(每秒的读写次数)
throughput (吞吐量单位时间内成功传输的数据数量)
文件系统(数据存储的方式和读写的方式)
page cache
文件系统 ext4,xfs windows的是ntfs
磁盘的初始化方法 MBR 和 GPT(> 2TB)
挂载
linux中设备不能直接使用,需要挂载到文件夹才可以。
lsblk 查看块设备
df -h 查看正在挂载的设备情况
fdisk /dev/sdb 开始分区的命令
mount /dev/sdb1 /home/newdisk
挂载的详细方式
启动流程
CentOS8启动流程解析
1、接通电源(系统固件(UEFI或BIOS初始化)运行开机自检,并初始化部分硬件)
2、系统固件搜索可启动设备(启动设备可能是UEFI启动固件中配置的,也可能是按照BIOS中配置的顺序搜索所有磁盘上的主启动记录(MBR),使用grub2-install)
3. 读取启动加载器(boot loader)(系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器,在CentOS8中启动加载器为GRUB2)
4. grub.cfg(GRUB2将从/boot/grub2/grub.cfg文件中加载配置并显示一个菜单,在这个菜单中可以选择要启动的内核,我们可以使用grub2-mkconfig命令配合/etc/grub.d/目录和/etc/default/grub文件生成grub.cfg文件。)
5 initramfs(在选择内核或到达超时时间后,启动加载器会从磁盘加载内核(vmlinuz)和initramfs,并将它们放入内存中,initramfs中包含启动时所有必要硬件的内核模块(驱动)和初始化脚本等,使用lsinitrd和dracut命令配合/etc/dracut.conf.d/目录可以查看和配置initramfs文件)
6 启动加载器放权(启动加载器将控制权交给内核)
7 内核初始化内核会在initramfs中寻找硬件的相关驱动并初始化相关硬件,然后启动/usr/sbin/init(PID=1),在CentOS8中/sbin/init是systemd的链接
8 启动initrd.target并挂载 systemd会执行initrd.target包含的所有单元,并将根文件系统挂载到/sysroot/目录,在initrd.target启动时的依赖单元,会按照/etc/fstab设置对硬盘进行挂载
9 切换根文件系统内核将根文件系统从initramfs切换为/sysroot(硬盘上的根文件系统),systemd会找到磁盘上安装的systemd并自动重新执行
有计划的任务
atq的任务
batch:系统有空时才进行后台任务
周期性的任务 crontab anacron
局域网配置ip服务的dhcp服务
上传文件的 FTP
rsync
rsync -avzP --delete --password-file=/etc/rsync.pw hello@192.168.11.16::www /cache
rsync
参数-a 归档模式传输,相当于
-rlptgoD一起使用
-v 详细模式输出
-z 传输时进行压缩以提高效率
-r 递归传输目录及子目录,即目录下得所有目录都同样传输
-t 保持文件时间信息
-o 保持文件属主信息
-p 保持文件权限
-g 保持文件属组信息
-l 保留软连接
-P 显示同步的过程及传输时的进度等信息
-D 保持设备文件信息
-L 保留软连接指向的目标文件
--exclude=PATTERN 指定排除不需要传输的文件模式
--bwlimit=1m 限速传输
--delete 让目标目录和源目录数据保持一致
--password-file 指定密码文件位置step8
替换某个文件下的geoJson为.json文件
#!/bin/bash
find ./100000/* -name '*.geoJson' | while read fname
do
echo "$fname";
mv $fname ${fname%.geoJson}.json
done
net-tools
httpd服务
启动apach的方式 systemctl start httpd
httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,
在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。
所以有时候听到apache服务器和httpd服务器其实都是指得是一个意思。
Linux之Httpd(Apache)服务详解
Apache(httpd)的简介、安装以及如何使用