• Linux原理与实践


    Linux 中的文件及权限

    -rwxr-xr-x 1 cat animal 68 03-31 21:47 sleep.sh
    三种用户角色:
    r 4 w 2 x 1
    user ,文件的所有者
    group,所属的用户组
    others,其他人

    查找文件

    find :功能最丰富的文件查找命令
    基本用法示例:
    find / -name test -print
    查找 / 目录下 名字为 test 的文件,然后打印出文件名

    常用格式:
    find [路径] [选项] [查找规则] [动作]

    [路径]可以有多个,以空格分隔
    [选项]常用的有:
    -depth 先找目录内容,再找目录自身,即先深入查找.
    -follow 跟随符号链接,将软连接解为实际文件.
    -maxdepths N 设置目录查找深度
    -mount (或 -xdev) 不查找其他挂载的文件系统,如NFS等

    基于文件名的[查找规则]:

    例1: find . -name “*.php”
    查找本目录下所有后缀名为 .php 的文件

    例2: find . -iname “x[abc]”
    查找本目录下所有文件名为 xa、xb或xc 的文件,且不区分大小写。

    例3: find . -regex ".b.3"
    查找本目录下文件完整路径及名称匹配该正则的。

    基于时间的[查找规则]:

    例1: find . -mmin -60
    查找本目录下修改时间为最近60分钟内的

    例2: find . -mmin +5
    查找本目录下修改时间为5分钟之前的

    例3: find /tmp -atime -1
    查找/tmp目录下最近1天(24小时)内被访问过的文件

    find . -atime N

    其中 -atime 的位置也可以使用如下参数:
    -atime, -mtime, -ctime, -amin, -mmin, -cmin N

    time: 天(24小时),min: minute,分钟

    +N N时间前,-N N时间内的,n 等于N的

    基于文件类型的[查找规则]:

    例1: find . -type f
    查找本目录下所有的“文件”

    例2: find . -type d
    查找本目录下所有的“目录”

    其他[查找规则]:

    例1: find . -user root
    查找本目录下所有root用户的文件

    例2: find . -perm 600
    查找本目录下所有权限为600的文件

    [查找规则]的组合:

    find . ( -name “_*“ -or -user root ) -type f
    查找本目录下(以_开头或root用户的)“文件”

    逻辑运算符:
    -not
    -or
    -and

    -exec 示例:

    find ./ -name "*.tmp" -exec unlink {} ;

    {} :指代找到的文件
    ; :表示-exec指定的命令结束,必须。

    安全起见也可以用 -ok

    其他查找文件命令:

    which :查找环境变量PATH下的可执行文件及别名(alias)
    whereis:查找系统常见目录中的可执行文件、文档、源代码、配置文件等
    locate:通过索引数据库查找文件

    Linux中的文本工具

    cat
    ——查看文件内容

    head
    ——查看文件头部

    tail
    ——查看文件尾部

    more
    ——分页查看文件内容

    less
    ——更强的分页查看文件内容

    cut
    ——按列查看文件内容,默认以 TAB 分隔

    sort
    ——对文件内容排序

    uniq
    ——对文件内容排重, -c 可统计重复行数量

    管道

    需求:分析如下网站访问日志文件,找出访问量最大的前10个IP地址,降序排列
    123.151.47.117 - - [16/Feb/2014:00:00:02 +0800] "GET / HTTP/1.1"
    220.171.166.19 - - [16/Feb/2014:00:00:06 +0800] "GET /search/mp3

    $ cut -d " " -f1 ./access.log | sort | uniq -c | sort -n -r | head -10

    通过管道使用工具

    Linux 中有三个系统文件描述符: 0:标准输入; 1:标准输出; 2:标准错误输出。
    标准输出、标准错误输出通常默认为当前屏幕。
    管道是Linux进程间通信的方式之一
    管道像一根供数据流通的单向管道
    所有Linux程序的标准输出都可以通过管道传递给另一个程序作为标准输入

    输入/输出重定向

    ls -l > ls_output.log 将标准输出重定向到 ls_output.log 文件
    ls -l >> ls_append.log 将标准输出重定向追加到 ls_output.log 文件

    ls -l 1> ls_output.log 2> ls_error.log
    将 标准输出 重定向到 ls_output.log 文件,标准错误输出重定向到 ls_error.log 文件

    ls -l 1> ls_out.log 2>&1
    将标准输出重定向到 ls_out.log 文件,然后将标准错误输出重定向到和标准输出同样的地方。

    more < xxx.txt 输入重定向

    重定向案例

    $ cut -d " " -f1 ./access.log | sort | uniq -c | sort -n -r | head -10 > ip.log

    系统管理

    ps 命令:显示当前进程
    ps -ef 显示带启动命令行的进程信息
    ps -u root 显示某用户的进程
    ps -A 显示全部进程
    ps -ejH 显示进程树

    kill 命令:向进程发送信号,常用于终止某进程
    kill -s PID
    -s 指定信号
    kill -9 PID 可用于强制某进程退出
    killall 可用于通过进程名称发送信号

    fg 命令: 将后台任务调到前台
    命令后加 & ,或Ctrl + Z 可将任务转到后台执行
    后台执行中的任务,可以通过 “fg %任务序号” 或 “fg #pid” 调到前台

    crontab:让命令自动定时运行

    netstat: 查看网络状态
    netstat -alpn 查看所有网络连接状态,带进程名称

    Ifconfig : 查看网卡配置、ip地址信息

    iptables: Linux 防火墙
    常用命令:
    service iptables start #启动服务
    iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP #所有来自 1.2.3.4 的80端口访问全部屏蔽
    service iptables save #保存规则,否则重启失效
    iptables -L -n --line-numbers #列出当前配置及规则号
    iptables -D INPUT 4 删除INPUT类第4号规则
    iptables -F 清除所有规则

    top
    常用操作:
    P:按CPU使用量排列, M:按内存使用量排列, h:显示帮助 , q:退出
    1: 多 CPU 显示, k:杀死进程, r:设置进程Nice级别

    查看系统运行状态

    $ cat /proc/cpuinfo
    $ cat /proc/loadavg

    软件安装

    yum 安装
    rpm安装
    源码编译安装

    crontab

    crontab: 定时执行任务
    crontab -e 设置定时任务:
    基本格式 :
            *  command
    分  时  日  月  周 

    分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6)//0代表周日
    每个 * 的位置除数字取值外,还可以有如下格式:

    • 代表所有的取值范围内的数字;
      / 代表“每”的意思,如 "*/5"表示每5个单位;
    • 代表范围,从某个数字到某个数字;
      , 用于指定多个值。

    实例:
    0 6 * * * echo "GoodMorning" >> /tmp/test.txt
    每天早上6时0分

    0 */2 * * * echo "Have A Break" >> /tmp/test.txt
    每两个小时

    0 23-7/2,8 * * * echo "Good dream:)" >> /tmp/test.txt
    晚上11点到早上7点之间每两个小时,早上八点

    常用命令
    service crond start 启动crond服务
    crontab -l #列出cron服务的详细内容
    crontab -u XXX -e #设定xxx用户的cron服务
    crontab -u XXX -r #删除xxx用户的所有cron服务

  • 相关阅读:
    NC_6_TREE_MAX_PATH
    NC_12_reConstructBinaryTree
    NC_15_levelOrder
    NC_7_MAXPROFIT
    NC_9_HAS_PATH_SUM
    NC_8_BINARYTREE_SUMPATH
    NC_13_MAX_DEPTH
    IDEA的基本使用:让你的IDEA有飞一般的感觉
    Java获取当前系统事件System.currentTimeMillis()方法 ,获取当前时间戳10位 1665291145 转为时间字符串 yyyMMdd
    JAVA中计算两个日期时间的差值竟然也有这么多门道
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/8182292.html
Copyright © 2020-2023  润新知