Linux实操速记-基础1

Linux实操速记-基础1

任务调度

  • crontab 选项
    • -e 编辑crontab定时任务
      • 特殊符号
        • * 代表任何时间,比如第一个“*” 就代表一小时中每分钟都执行一次的含义
        • ,代表不连续的时间,比如“0 8,12,16***”命令,就代表每天8点0分、12点0分,16点0分都执行
        • - 代表连续的时间范围,比如“0 5 * * 1-6”命令,代表周一到周六凌晨5点0分执行
        • */n 代表每隔多久执行一次,比如“*/10 * * * *”命令,代表每隔10分钟执行一次
      • 五个*的意义
        • 第一个* 一小时当中的第几分钟 范围0-59
        • 第二个* 一天当中的第几个小时 范围0-23
        • 第三个* 一个月当中的第几天 范围1-31
        • 第四个* 一年当中的第几月 范围1-12
        • 第五个* 一周当中的星期几 范围0-7 (0和7都代表星期日)
      • */1**** ls -l /etc/ > /tmp/to.txt 每分钟执行ls -l /etc/ > /tmp/to.txt 命令
        • 45 22 * * *,在每天22点45分执行命令
        • 0 17 * * 1,在每周一17点0分执行
        • 0 5 1,15 * * ,在每月1号和15号的凌晨5点0分执行命令
        • 40 4 * * 1-5,在每周一到周五凌晨4点40分
        • */10 4 * * *,每天凌晨4点到5点之间,每隔10分钟执行一次命令
        • 0 0 1,15 * 1 ,每月1号和15号,每周一的0点0分都会执行命令。注意星期几和几号不要同时出现,非常容易让管理员混乱
      • 每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
        • */1 * * * * date >> /tmp/mydate
      • 每隔一分钟,将当前日期和日历都追加到/home/mycal文件中
        • vim /home/my.sh 在脚本中写入:data>> /home/mycal 和cal >> /home/mycal
        • 给my.sh增加执行权限,chmod u + x /home/my.sh
        • crontab -e 增加*/1 * * * * /home/my.sh
      • 每天凌晨2:00将mysql数据库testdb,备份到文件中
        • crontab -e
        • 0 2 * * * mysqldump -u root -p密码 testdb >> /home/db.bak
    • -l 查询crontab任务
    • -r 删除当前用户所有crontab任务
    • service crond restart 重启任务调度

定时任务

  • at命令
    • 它是一次性定时任务计划任务,只运行一次任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
    • 默认情况,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
    • 在使用at任务的时候,一定要保证atd进程启动,可以使用指令查看(ps -ef | grep atd)
  • 语法 : at 选项 时间
    • ctrl + D 结束at命令的输入
    • -m 当指定任务被完成后,将给用户发送邮件,即使没有标准输出
    • -I atq的别名
    • -d atrm的别名
    • -v 显示任务将被执行的时间
    • -c 打印任务的内容到标准输出
    • -V 显示版本信息
    • -q <队列> 使用指定的队列
    • -f <文件> 从指定文件读入任务而不是从标准输入读入
    • -t <时间参数> 以时间参数的形式提交要运行的任务
  • 指定时间的方法
    • 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行,例如:04:00
    • 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点),等模糊的单词描述
    • 采用12小时制,即在时间后面加上AM(上午)或PM(下午),如12pm
    • 指定命令执行具体日期,格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面,如:04:00 2021-03-1
    • 使用相对计时法,指定格式为:now + count time-units,now就是当前时间,time-units瑟是时间单位,minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是数量,如:now + 5minutes 五分钟后执行
    • 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间
  • 应用
    • 2天后的下午5点执行/bin/ls /home
      • at 5pm + 2days
      • /bin/ls /home
      • ctrl + D *2
    • atq查询当前任务列表
    • 明天17点,输出时间到指定文件中
      • at 5pm tomorrow
      • date > /temp/1.txt
      • ctrl + D *2
    • 2分钟后,输出时间到指定文件内,比如 /root/date200.log
      • at now + 2 minutes
      • date > /root/date200.log
      • ctrl + D *2
    • 删除已经设置的任务,atrm编号

磁盘分区

linux只有一个根目录,一个独立且唯一的文件结构,每个分区都是用来组成整个文件系统的一部分

linux采用“载入”的处理方法,整个文件系统包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得

  • lsblk 查询磁盘分区挂载情况

    • -f 显示格式与挂载情况
    • ide硬盘标识符“hdx~”
      • x为盘号(a为基本盘、b为基本从属盘,c为辅助主盘,d为辅助从属盘)
      • ~代表分区,前四个分区1-4标识主盘或扩展分区,从5开始是逻辑分区
    • scsi硬盘标识符“sdx~”
      • 同上
  • 添加硬盘

    • 加上硬盘重启,lsblk查看识别情况
    • fdisk /dev/sdb 对硬盘进行分区,回车后可以使用m来查看帮助
    • 输入n ,输入p ,输入1,回车,回车, 输入w
    • lsblk查看分区情况
    • 格式化分区:mkfs -t ext4 /dev/sdb1
    • lsblk查看分区格式情况
    • 挂载分区:mount /dev/sdb1 /newdisk 把分区挂载到/newdisk
    • 卸载分区:umount /dev/sdb1 或者umount /newdisk
    • 此时的挂载只是临时挂载,重启后要重新挂载
    • 永久挂载:通过修改/etc/fstab实现
      • vim /etc/fstab
      • i进入插入模式,/dev/sdb1 /newdisk ext4 00
      • 保存退出
      • mount -a 可马上生效,或者重启即可
  • df -h查询分区使用情况

  • du -h 查询指定目录的磁盘占用情况

    • -s指定目录占用大小汇总
    • -h 带计量单位
    • -a 含文件
    • --max-depth=1 子目录深度
    • -c列出明细的同时,增加汇总值
    • 应用:
      • 查询/opt目录的磁盘占用情况,深度为1 du -h --max-depth=1 /opt
      • 统计/opt文件夹下文件的个数 ls -l /opt | grep "^-" | wc -l
      • 统计/opt文件夹下文件夹的个数 ls -l /opt | grep "^d" | wc -l
      • 统计/opt文件夹下文件的个数包括子文件夹里的 ls -lR /opt | grep "^-" | wc -l
      • 统计/opt文件夹下目录的个数包括子文件夹里的 ls -lR /opt | grep "^d" | wc -l
      • 以树状显示目录结构:thee (如果没哟安装,需要使用命令:yum install tree 安装)

    网络配置

  • 修改配置文件来指定IP

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

    #接口名(设备,网卡)
    DEVICE=eth0
    #MAC地址
    HWADDR=00:0C:2x:6x:0x:xx
    #网络类型(通常是Ehernet)
    TYPE=Ehernet
    #随机ID
    UUID=926a57ba-92c6-4231-bacb-f27e5e6a9f44
    #系统启动时网络接口是否有效
    ONBOOT=yes
    #IP的配置方法(none|static|bootp|dhcp)(引导时不使用协议|静态分配IP|BOOTP斜体|DHCP协议)
    BOOTPROTO=static
    #IP地址
    IDADDR=192.168.200.130
    #网关
    GATEWAY=192.168.200.2
    #域名解析器
    DNS1=192.168.200.2
    
  • 设置主机名和ip映射

    vim /etc/hosts ip地址 主机名

进程管理

每个执行的程序都成为一个进程,每个进程都分配一个ID号(pid,进程号)

每个进程都可以以两种方式存在,前台、后台(顾名思义,能否被用户可见区分)

一般系统服务都是以后台进程方式存在,而且常驻系统,直到关机

shell中在可执行程序后面添加&作用:后台运行、nohup作用:shell退出后此进程不被杀死

  • ps 查看目前系统中进程情况

    • PID 进程识别号 TTY 终端机号 TIME 此进程所消CPU时间 CMD 正在执行的命令或进程名
    • -a 显示所有信息
    • -u 以用户的格式显示
    • -x 显示后台进程运行的参数
    • -e 显示所有进程
    • -f 全格式
    • 应用:
      • ps -aux|grep XXX 查看XXX进程运行情况
      • ps -ef|grep XXX 查看全格式所有进程,包含父进程信息
  • kill与killall 终止进程

    • kill 【选项】 进程号(通过进程号杀死进程)
    • killall 进程名称(通过进程名称杀死进程包括它的子进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
    • 选项 -9:强迫进程立即停止
    • 实践
      • 踢掉某个非法登入用户: 1.ps -aux |grep sshd 2.kill 进程号
      • 终止远程登入服务sshd,在适当时再次重启sshd服务: 1.ps -aux |grep sshd 2.kill 进程号3./bin/systemctl start sshd.service
      • 终止多个gedit:killall gedit
      • 强制杀死一个终端:kill -9 进程号
  • pstree [选项] 更直观的看进程信息

    • -p 显示进程的PID
    • -u 显示进程的所属用户

服务管理

运行在后台的进程,即服务其他程序的进程又称为守护进程(如mysqld、sshd、firewall)

centos7之前使用以下进行管理:

  • 服务存在的位置 /etc/init.d

  • service 服务名 (start|stop|restart|reload|status)

  • chkconfig

    • chkconfig --list 显示服务各个运行级别的自动启动情况
    • chkconfig --list | grep network 显示服务各个运行级别的自动启动情况,只看network
    • chkconfig network --list 显示服务各个运行级别的自动启动情况,只看network
    • chkconfig --level 5 network on/off 开启network 服务在启动级别5自启动开关(这里要重启后生效)

centos7之后使用以下进行管理

  • 服务存在的位置/usr/lib/systemd/system

    • 当不知道某个服务全名的时候可以这样查,查防火墙示例:ls -l /usr/lib/systemd/system |grep fire
  • systemctl 【start|stop|restart|status】 服务名(临时开启和关闭,不影响自启动设置)

  • systemctl list-unit-files [| grep 服务名] (查看服务开机启动状态,grep可以进行过滤)

  • systemctl enable 服务名 (设置开机启动服务)

  • systemctl disable 服务名 (关闭开机启动服务)

  • systemctl is-enable 服务名 (查询服务是否开启自启动)

查看服务名

  • ls -l /etc/init.d 查看centos7之前的服务
  • setup 查看所有服务,选择服务,使用空格开勾选(*)自启动

服务的运行级别

  • 0 关机
  • 1 单用户无网络,root权限,单机维护
  • 2 多用户无网络
  • 3 多用户网络,无界面
  • 4 预留
  • 5 多用户网络,图形界面
  • 6 重启
  • 运行级别在:/etc/initab下,centos7之后可以直接运行以下命令设置和浏览默认开机运行级别
    • systemctl set-default TARGET.target 设置(TARGET有常用的枚举值:multi-user 代表3,graphical 代表5)
    • systemctl get-default 查看

开机流程:开机->BIOS->/boot->systemd进程1->运行级别->运行级别对应的服务

防火墙使用

  • 打开端口:firewall-cmd --permanent --add-port=端口号/协议
    • --permanent 这个代表永久生效
  • 关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
  • 打开和关闭都需要重新载入才生效:firewall-cmd --reload
  • 查询端口是否开启:firewall-cmd --query-port=端口号/协议
  • 查看防火墙已开放端口列表 firewall-cmd --list-all

动态监控

进程监控

区别于ps命令使用top命令

  • top
    • 参数
      • -d 秒数 指定进程几秒更新,默认是3秒
      • -i 使top不显示任何闲置或者僵死进程
      • -p 通过指定监控的进程id来仅仅监控某个进程的状态
    • 交互操作
      • P 以CPU使用率排序
      • M 以内存使用率排序
      • N 以PID排序
      • q 退出监控
    • 应用
      • 监控特定用户:top,输入‘u’,再输入用户名
      • 终止指定进程:top,输入‘k’,在输入要结束的进程PID号

网络监控

  • netstat [选项]
    • -an 按一定顺序输出
    • -p 显示哪个进程再调用
posted @   邵泽龙  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示