shell学习:第一阶段笔记汇总

目录

第一部分:操作文件及目录

第二部分:监控程序

监测程序

监测磁盘空间

第三部分:编辑器相关使用

vim 编辑器(vi improved,简称vim)

nano 编辑器


第一部分:操作文件及目录

1. 文件属性(查看文件属性命令stat)

struct stat {
    dev_t st_dev; /* 设备   */
    ino_t st_ino; /* 节点   */
    mode_t st_mode; /* 模式   */
    nlink_t st_nlink; /* 硬连接 */
    uid_t st_uid; /* 用户ID */
    gid_t st_gid; /* 组ID   */
    dev_t st_rdev; /* 设备类型 */
    off_t st_off; /* 文件字节数 */
    unsigned long  st_blksize; /* 块大小 */
    unsigned long st_blocks; /* 块数   */
    time_t st_atime; /* 最后一次访问时间 */
    time_t st_mtime; /* 最后一次修改时间 */
    time_t st_ctime; /* 最后一次改变时间(指属性) */
};

2. 文件类型

文件类型对应文件属性中的st_mode,文件类型有很多种,常见的有常规文件、符号链接(硬链接、软链接)、管道文件、设备文件(符号设备、块设备)、socket文件等,不同的文件类型对应不同的功能和作用。

file,这个命令用来查看各类文件的属性,和 stat 命令相比,它可以进一步识别普通文件。

3. 文件属主

文件属主包括该文件所属用户,以及该文件所属的用户组,用户可以属于多个组。

管理命令:

  • useradd , userdel 创建和删除用户
  • groupadd , groupdel 创建和删除用户组
  • passwd 修改用户密码

配置信息管理文件说明:

  • /etc/passwd 存放用户信息
  • /etc/group 存放用户组信息
  • /etc/shadow 存放密码

常用命令:

  • chown [-R] 用户名:组名 文件名 修改文件属主,-R表示递归修改
  • chmod [+/- rwx]/[八进制数字] 文件名 修改文件权限

4. 高频使用命令汇总

  • cd:切换目录
  • mkdir:创建目录
  • touch:创建文件
  • vim:编辑文件内容,或新建一个文件并进入编辑状态
  • cat/less/more/head/tail... 查看文件内容
  • ls: 显示当前目录下的文件和目录
  • cp:复制文件或目录
  • ln:创建链接文件

硬链接,创建方式:ln + 源文件名 + 目标文件名

软连接,即符号链接,创建方式:ln -s + 源文件名 + 目标文件名

  • mv:重命名或移动文件
  • rm:删除文件,删除目录使用rm -r +目录名称

5. 应用示例

#!/bin/bash
#遍历目录下所有的文件是目录还是文件
for file in /Users/*
do
    if test -d ${file}; then
        echo "${file}是目录"
    else
        echo "${file}是文件"
    fi     
done  

#按行读取文件内容
while read LINE; do echo $LINE; done < test.sh

第二部分:监控程序

监测程序

ps: 显示运行在当前控制台下的属于当前用户的进程;

top: 实时显示进程信息;

kill PID: 终止进程,kill -s HUP 3904

监测磁盘空间

mount:输出当前系统上挂载媒体的设备列表

mount -t type device directory 手动挂载媒体设备的命令,示例:mount -t vfat /dev/sdb1 /media/disk/

type参数指定了磁盘被格式化的文件系统类型

  • vfat:windows长文件系统;
  • ntfs: 。。。高级文件系统;
  • iso9660:标准CD-ROM文件系统;

umount:卸载挂载设备,从Linux系统上移除一个可移动设备时,不能从系统上直接删除,而是要先卸载

umount [directory | device] 卸载移动设备的命令

df:查看所有易挂载设备的使用情况

du:显示某个特定目录磁盘使用情况 [-c -h -s]

sort [-n -M -r] 对文件内容排序 -n以数字排序,-M三字符月份名排序, 反序排序

tar -cvf test.tar test/ test2/ 归档文件 ----> tar -xvf test.jar 从已有归档文件中提取文件(.tgz结尾的文件使用-zxvf解压)

应用示例: 监控系统服务,并发送异常报警邮件第三部分:编辑器相关使用

#!/bin/bash
#a mail alarm which could monitor a server batchly
#by author @GuoChunli 2019

cat << EOF
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++Welcome to use auto server monitor++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF

EMAIL=email.txt
DATE=`date`

#check it's a file ,then traverse all elements in the file
if [[ -z $1 ]];then
        echo -e "\033[31m {Usage: nginx | mysql | monitorServers.txt} \033[0m"
        exit
fi

if [ -f $1 -a "$1" == "monitorServers.txt" ];then

for i in `cat monitorServers.txt | grep -v "#"`
do
        count=` ps -ef | grep $i | grep -v email | grep -v grep | wc -l `
        M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`

        if [[ $count -eq 0 ]]; then

cat > $EMAIL  << EOF
********************server monitor*****************
通知类型: malfunction
服务:$i
主机:$M_IPADDR
状态:Warning
日期/时间:$DATE
其他信息:
CRITICAL - $i Server connection is abnormal, please check!
***************************************************
EOF
                dos2unix $EMAIL
                echo -e "\033[31m The server $i is abnormal, please check! \033[0m"
                mail -s "$M_IPADDR $i is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1

        else
                echo "The server $i is in service!"
        fi

done

else
        count=` ps -ef | grep $1 | grep -v email | grep -v "grep" | wc -l `
        M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`

        if [[ $count -eq 0 ]]; then

cat > $EMAIL  << EOF
********************server monitor*****************
通知类型: malfunction
服务:$1
主机:$M_IPADDR
状态:Warning
日期/时间:$DATE
其他信息:
CRITICAL - $1 Server connection is abnormal, please check!
***************************************************
EOF
                dos2unix $EMAIL
                echo -e "\033[31m The server $1 is abnormal, please check! \033[0m"
                mail -s "$M_IPADDR $1 is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1


        else
                echo "The server $1 is in service!"
        fi

fi

第三部分:编辑器相关使用

vim 编辑器(vi improved,简称vim)

vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文本中移动、插入、编辑和替换文本。

apt-get 用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

vim编辑器在内存缓冲区域处理数据。

vim编辑器有两种操作模式:

  • 普通模式,将按键解释为命:令h(左) j(下) k(上) l(右)
  • 插入模式

x 删除当前光标所在位置的字符

dd 删除光标所在行

dw 删除光标所在位置的单词

d$ 删除光标所在位置至行尾的内容

J 删除光标所在行的换行符

u 撤销上一编辑命令

a 在当前光标位置后追加

A 在当前光标坐在行行尾追加

r [char] 用char替换光标所在位置的单个字符

R [text] 用text覆盖光标所在位置的数据,知道按下esc

 

v 进入可视模式

y 复制(y$复制内容至当前行尾)

p 粘贴

 

:s/old/new/ 替换

:s/lod/new/g 替换所有old

:n, ms/old/new/g 替换行号n和m之间所有old

:%s/old/new/g 替换整个文件中的所有old

:%s/old/new/gc 替换整个文件中的所有old,但每次出现时提示

nano 编辑器

nano myprog.c 启动编辑器,nano控制命令在使用时,不区分大小写

附录

1. Linux下挂载点说明

  • / : 虚拟目录的根目录,通常不会在这里存储文件
  • /usr :用户安装软件的目录
  • /var :可变目录,用以存放经常变化的文件,比如日志文件
  • /bin :二进制目录,存放许多GNU用户级的工具
  • /dev :设备目录,Linux在这里创建设备节点
  • /home :主目录,Linux在这里创建用户目录
  • /etc :系统配置文件目录
  • /boot :启动目录,存放启动文件
  • /opt :可选目录,通常用于存放可选的软件包
  • /lib :库目录,存放系统和应用程序的库文件
  • /tmp :临时目录,可以在该目录创建和删除临时工作文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章