Linux 基础开发手册

778 阅读21分钟

骚操作

(curl wttr.in/hangzhou?lang=zh)

image.png

基本命令记录

环境 centos7.x 善用/usr/share/doc

运行下面命令需安装包 yum install redhat-lsb
[root@iZbp1g4ytp0whqz29e5dyfZ data]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 8.3.2011
Release:        8.3.2011
Codename:       n/a

帮助

  • date --help 快捷帮助
  • man date manual操作说明

yum [option] [查询的工作项目] [相关参数] 安装软件组、全系统更新

Yum不仅能够提供在线自动升级,它还可以用于查询、软件组的安装、整体版本的升级等

option主要的参数,包括有:
  • -y:当yum询问用户的意见时,主动回答yes而不需要由键盘输入
[查询的工作项目]:由于不同的使用条件,而有一些选择的项目,包括:
  • install 指定安装的软件名称,所以后面需接软件名称
  • update 进行整体升级的行为:当然也可以接某个软件, 仅升级一个软件
  • remove 删除某个软件,后面需接软件名称
  • search 搜寻某个软件或者是重要关键字
  • list 列出目前yum所管理的所有的软件名称与版本,有点类似rpm -qa
  • info 同上,不过有点类似rpm -qai的执行结果
  • clean 下载的文件被放到/var/cache/yum, 可使用clean将它移除(可清除的项目有packages | headersmetadataI cache 等)
查询的工作项目部分还可以具有整个组软件的安装方式,如下所示:
  • grouplist 列出所有可使用的软件组,例如Development Tools 之类
  • groupinfo 后面接group name,则可了解该group内含的所有软件名
  • groupinstall这个好用!可以安装整组的软件组, 相当的不错!
  • groupremove 删除某个软件组
yum实例
[root@iZbp1g4ytp0whqz29e5dyfZ ~]# yum search nginx
Last metadata expiration check: 0:49:57 ago on Wed 07 Jul 2021 04:52:54 PM CST.
========================================================================================================= Name Exactly Matched: nginx ==========================================================================================================
nginx.x86_64 : A high performance web server and reverse proxy server
======================================================================================================== Name & Summary Matched: nginx =========================================================================================================
collectd-nginx.x86_64 : Nginx plugin for collectd
...

ls 文件与目录的查看 自行 ls --help

cp 复制 自行

  • cp [-adfilprsu] 源文件(source) 目标文件(destination)
  • -a = -dr 常用
  • -d 复制link 不复制文件本身
  • -r 递归复制
  • -i 覆盖提示
  • -p 备份常用 复制文件的权限 用户 时间
  • cp -ai /data /data/test

rm 删除 自行 慎用

  • -f 忽略不存在的文件
  • -i 询问是否操作
  • -r 递归删除
  • rm -rf /

mv 移动

  • mv [-fiu] source destination
  • -f 直接覆盖 强制
  • -i 询问覆盖
  • -u 更新较新的

date 显示日期与时间

date +%Y/%m/%d 格式化日期
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# date
Thu Jun 24 09:21:43 CST 2021
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# date +%Y/%m/%d
2021/06/24
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# date +%H/%M
09/46

locale 显示支持的语系

[root@iZbp1g4ytp0whqz29e5dyfZ dev]# locale
LANG=en_US.UTF-8 // 语言
LC_CTYPE="en_US.UTF-8" // 信息输出
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8" // 时间
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL= // 全部数据同步更新的值

LANG=en_US.utf8 设置语系

LANG只与输出信息有关,若要更改其它不同信息需要同步更新LC_ALL

[root@iZbp1g4ytp0whqz29e5dyfZ dev]# LANG=en_US.utf8
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# export LC_ALL=en_US.utf8
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# locale
LANG=en_US.utf8
LC_ALL=en_US.utf8

cal 显示日历

语法cal [month] [year]

  • cal 2021查看2021年
  • cal 6 2021查看 2021年6月
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# cal
      June 2021
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

[root@iZbp1g4ytp0whqz29e5dyfZ dev]# cal 6 2021
      June 2021
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

[root@iZbp1g4ytp0whqz29e5dyfZ dev]# cal 2021
                               2021

       January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6       1  2  3  4  5  6
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27
24 25 26 27 28 29 30   28                     28 29 30 31
31
        April                   May                   June
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3                      1          1  2  3  4  5
 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30
                       30 31
        July                  August                September
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7             1  2  3  4
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30

       October               November               December
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6             1  2  3  4
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31
31

bc 计算器

  • + - * / ^指数 %余数
  • scale=3指定小数位数 1/3 => .333
  • quit 退出
[root@iZbp1g4ytp0whqz29e5dyfZ dev]# bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2+5
7
8*8
64

man date 解析

  • man man 可以直接查看详情说明
  • DATE(1) 1代表一般用户可以操作的命令或可执行文件 见下表1
  • NAME 命令全名
  • SYNOPSIS 基本用法
  • DESCRIPTION 详细说明
  • ENVIRONMENT 环境参数

其它man相关

  • man -f man 与man相关的说明文件
    • 缩写 whatis [命令或文件] 依赖mandb
  • man 1 man 为1的说明文件
  • man 7 man为7的说明文件
  • man -k man 包含关键字
    • 缩写apropos [命令或文件] 依赖mandb
表1
代号代表内容
1用户在shell环境中可以操作的命令或可执行文件
2系统内核可调用的函数与工具等
3常用函数(function)与库(library),大部分为C(libc)
4设备文件的说明,通常在/dev下
5配置文件或某些文件格式
6游戏
7惯例与协议等,如文件系统、网络协议、ASCII的说明
8系统管理员可用的管理命令
9内核有关文件
DATE(1)                                                                             User Commands                                                                            DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display the current time in the given FORMAT, or set the system date.

       Mandatory arguments to long options are mandatory for short options too.

EXAMPLES
...

info page

以命令行模式显示的网页数据,/usr/share/info

  • info info
Next: Stand-alone Info,  Up: (dir)

Stand-alone GNU Info
********************
本文档描述了您可以使用的独立信息阅读器用于阅读信息文档。

   如果您不熟悉信息阅读器,则可以通过键入开始'H' 表示基本键绑定列表。你可以通读剩下的通过键入 <SPC> 和 <DEL>(或 <Space> 和 <Backspace>)来查看本手册在其中向前和向后移动。

* Menu:

* Stand-alone Info::            What is Info?
* Invoking Info::               Options you can pass on the command line.
* Cursor Commands::             Commands which move the cursor within a node.
* Scrolling Commands::          Commands for reading the text within a node.
* Node Commands::               Commands for selecting a new node.
* Searching Commands::          Commands for searching an Info file.
* Index Commands::              Commands for looking up in indices.
* Xref Commands::               Commands for selecting cross-references.
* Window Commands::             Commands which manipulate multiple windows.
* Printing Nodes::              How to print out the contents of a node.
* Miscellaneous Commands::      A few commands that defy categorization.
* Variables::                   How to change the default behavior of Info.
* Colors and Styles::           Customize the colors used by Info.
* Custom Key Bindings::         How to define your own key-to-command bindings.
* Index::                       Global index.

* 菜单:

* 独立信息::什么是信息?
* 调用 Info:: 您可以在命令行上传递的选项。
* 光标命令:: 在节点内移动光标的命令。
* 滚动命令:: 用于读取节点内文本的命令。
* 节点命令:: 用于选择新节点的命令。
* 搜索命令:: 用于搜索信息文件的命令。
* 索引命令:: 用于在索引中查找的命令。
* 外部参照命令:: 用于选择交叉参照的命令。
* 窗口命令:: 操作多个窗口的命令。
* 打印节点:: 如何打印出节点的内容。
* 杂项命令:一些无法分类的命令。
* 变量:: 如何更改信息的默认行为。
* 颜色和样式:: 自定义信息使用的颜色。
* 自定义键绑定:: 如何定义您自己的键到命令绑定。
* 索引::全局索引。

关机相关

  • sync 将数据同步些人磁盘
    • 只有root账号才能更新整个系统中的数据,个人账号只能更新自己的数据
  • shutdown 关机 shotdown [-krhc] [时间] [警告信息]
    • -k 不关机,只发警告信息 shutdown -k now '吓唬人的关机'
    • -r 在将系统服务停掉后,就重新启动(常用)shutdown -r now shutdown -r +30 '30分钟后系统会重启'
    • -h 在将系统服务停掉后,就关机(常用)shutdown -h 20:22
    • -c 取消正在进行中的shotdown命令
    • shutdown -h 10 '10分钟后关机' Shutdown scheduled for Thu 2021-06-24 14:08:01 CST, use 'shutdown -c' to cancel.
    • 若不加任何操作 系统将在1分钟后进行关机操作
  • reboot/halt/poweroff重新启动
    • sync; sync; sync; reboot
    • halt 系统停止 屏幕可能保留停止的信息
    • poweroff 系统关机 屏幕空白
  • systemctl [halt/poweroff/reboot/suspend(休眠)]
    • systemctl reboot 重启

文件权限

/etc/passwd 系统账号

[root@iZbp1g4ytp0whqz29e5dyfZ ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
...

/etc/shadow 个人密码

/etc/group 组名

-文件/d目录属性

权限链接拥有者用户组文件容量修改日期文件名
-rw-------1rootroot23422021-06-21 09:23:18.555835553 +0800.bash_history
[root@iZbp1g4ytp0whqz29e5dyfZ ~]# ls -al --full-time
total 32
dr-xr-x---.  6 root root  202 2021-06-21 09:23:18.555835553 +0800 .
dr-xr-xr-x. 18 root root  256 2021-06-17 16:31:20.732426568 +0800 ..
-rw-------   1 root root 2342 2021-06-24 13:09:28.756957281 +0800 .bash_history
-rw-r--r--.  1 root root   18 2019-05-11 23:33:50.000000000 +0800 .bash_logout
-rw-r--r--.  1 root root  176 2019-05-11 23:33:50.000000000 +0800 .bash_profile
-rw-r--r--.  1 root root  176 2019-05-11 23:33:50.000000000 +0800 .bashrc
drwx------   3 root root   17 2021-04-20 12:12:10.957325030 +0800 .cache
-rw-r--r--.  1 root root  100 2019-05-11 23:33:50.000000000 +0800 .cshrc
drwxr-xr-x   2 root root   45 2021-06-17 16:31:27.522526144 +0800 .nvm
drwxr-xr-x   2 root root   22 2021-04-20 12:11:58.322875714 +0800 .pip
-rw-r--r--   1 root root  206 2021-05-27 18:04:06.972567392 +0800 .pydistutils.cfg
drwx------   2 root root   29 2021-04-20 12:18:16.779957288 +0800 .ssh
-rw-r--r--.  1 root root  129 2019-05-11 23:33:50.000000000 +0800 .tcshrc
-rw-------   1 root root 1510 2021-06-21 09:23:18.555835553 +0800 .viminfo

解释-rw-r--r--.

  • 1号位 文件类型
    • - 代表文件
    • d 代表目录
    • l 链接文件
    • b 周边设备
    • c 串行端口 如 鼠标键盘
  • 234位 文件拥有者权限
  • 567位 用户组权限
  • 890位 非本人且没有加入本用户组的其它账号的权限
    • r for read 读取
    • w for write 写入
    • x for execute 执行
    • 若无权限 则显示-

修改文件属性与权限 用户组 拥有者

  • chgrp 修改用户组
    • chgrp [-R] dirname/filename
      • -R 进行递归修改 目录下文件和文件夹都修改
      • chgrp users test.txt
      • 例子见下方 code1 chgrp users user.txt
  • chown 修改拥有者
    • chown [-R] 账号名称 dirname/filename
    • chown [-R] 账号名称:用户组名称 dirname/filename
    • 例子见下方 code2 chown bin user.txt
  • chmod 修改文件的权限
    • 数字类型修改权限
      • r:4 w:2 x:1
      • chmod [-R] xyz dirname/filenam
      • 例子见下方 code3 chmod 777 user.txt
    • 符号类型修改权限
      • u:user g:group o:other a:all

      • 例子见下方 code4 chmod u=rwx,go=rx user.txt

      • +:加入 -:移除 =:设置

      • 例子见下方 code5 chmod a+w user.txt

      • code5 chmod a-x user.txt

code1
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 24 16:00 user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chgrp users user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rw-r--r-- 1 root users 0 Jun 24 16:00 user.txt
code2
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chown bin user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rw-r--r-- 1 bin users 0 Jun 24 16:00 user.txt
code3
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chmod 777 user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rwxrwxrwx 1 bin users 0 Jun 24 16:00 user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]#

code4
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chmod u=rwx,go=rx user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rwxr-xr-x 1 bin users 0 Jun 24 16:00 user.txt
code5
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chmod a+w user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
-rwxrwxrwx 1 bin users 0 Jun 24 16:00 user.txt

文件权限完整示例

[root@iZbp1g4ytp0whqz29e5dyfZ data]# mkdir testing
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
drwxr-xr-x 2 root root  6 Jun 24 16:47 testing
-rwxrwxrwx 1 bin  users 0 Jun 24 16:00 user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chmod 744 testing/
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ll
total 0
drwxr--r-- 2 root root  6 Jun 24 16:47 testing
-rwxrwxrwx 1 bin  users 0 Jun 24 16:00 user.txt
[root@iZbp1g4ytp0whqz29e5dyfZ data]# touch testing/testing
[root@iZbp1g4ytp0whqz29e5dyfZ data]# chmod 600 testing/testing
[root@iZbp1g4ytp0whqz29e5dyfZ data]# ls -ald testing/ testing/testing
drwxr--r-- 2 root root 21 Jun 24 16:49 testing/
-rw------- 1 root root  0 Jun 24 16:49 testing/testing

文件与目录管理

目录基础

  • . 此层目录
  • .. 代表上一层目录
  • - 代表前一个工作目录
  • ~ 代表当前用户的主目录
  • ~account 代表次账号的用户主目录
  • cd 切换目录
  • pwd 显示当前目录
    • pwd -P 显示真正的路径 而非link
  • mkdir 建立新目录
    • mkdir [-mp] 目录名称
      • -m 设置文件权限
      • -p 递归创建目录
      • mkdir test1/test2/test3 报错 需加-p
      • mkdir -m 711 test2 指定权限并建立文件夹
  • rmdir 删除一个空目录
    • rmdir -P 目录名称 递归删除
    • ls -ld test* 查看目录数量

执行文件路径的变量

添加变量 PATH="${PATH}:/root/.nvm/versions/node/v14.15.0/bin:"

[root@iZbp1g4ytp0whqz29e5dyfZ data]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

修改PATH

  1. export PATH=/usr/local/mongodb/bin:$PATH
修改方法生效方法有效期限用户局限
终端中修改立即生效当前的终端窗口当前用户
修改.bashrcsource ~/.bashrc/重进永久有效仅对当前用户
修改profile系统重启/source /etc/profile/重进永久有效所有用户
修改environment系统重启永久有效所有用户
终端中修改PATH
输入 export PATH=/root/.nvm/versions/node/v14.15.0/bin:$PATH
export PATH=/root/.nvm/versions/node/v14.15.0/bin/node:$PATH
修改.bashrc
vim ~/.bashrc
在最后一行添上:export PATH=/root/.nvm/versions/node/v14.15.0/bin:$PATH
修改profile
vim /etc/profile
/export PATH //找到设置PATH的行
添加export PATH=/usr/local/mongodb/bin:$PATH
通过修改environment文件
vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入:/usr/local/mongodb/bin

常用的环境变量

  • PATH 决定了shell将到哪些目录中寻找命令或程序
  • HOME 当前用户主目录
  • HISTSIZE 历史记录数
  • LOGNAME 当前用户的登录名
  • HOSTNAME 指主机的名称
  • SHELL   当前用户Shell类型
  • LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
  • MAIL   当前用户的邮件存放目录
  • PS1   基本提示符,对于root用户是#,对于普通用户是$

cat/more/less文件内容查看

  • cat 由第一行开始显示 直接查看一个文件的内容可以使用
    • cat [-AbEnTv]
    • 相当于-vET的整合选项,可列出一 些特殊字符而不是空白而已;
    • -b 列出行号,仅针对非空白行做行号显示,空白行不标行号;
    • -E 将结尾的换行符$显示出来;
    • -n 打印出行号,连同空白行也会有行号,与-b的选项不同;
    • -T 将[tab]按键以^I 显示出来;
    • -v :列出一些看不出来的特殊字符;
    • cat -n /etc/issue
  • tac从最后-行开始显示, 可以看出tac是cat 的倒着写。
  • nl [-bnw] 文件显示的时候,同时输出行号。
  • more一页一页地显示文件内容。
  • less与more类似,但是比more更好的是,它可以往前翻页。head只看前面几行。
  • tail [-n number]只看后面几行。
    • -n 10 代表几行
    • -f 持续刷新后面文件中的内容
    • tail -n 20 /var/log/message
    • tail -f 20 /var/log/message
  • od以二进制的方式读取文件内容。

取11-20行 head -n 20 /etc/man_db.conf | tail -n 10

取11-20行 加行号 cat -n /etc/man_db.conf | head -n 20 | tail -n 10

[root@iZbp1g4ytp0whqz29e5dyfZ ~]# cat -n /etc/man_db.conf | head -n 20 | tail -n 10
    11  # --------------------------------------------------------
    12  # MANDATORY_MANPATH                     manpath_element
    13  # MANPATH_MAP           path_element    manpath_element
    14  # MANDB_MAP             global_manpath  [relative_catpath]
    15  #---------------------------------------------------------
    16  # every automatically generated MANPATH includes these fields
    17  #
    18
    #MANDATORY_MANPATH                      /usr/src/pvm3/man
    19  #
    20  MANDATORY_MANPATH                       /usr/man

文件默认权限 umask [-S]

文件隐藏属性 chattr [+-=] [ASacdistu] 文件或目录

  • chattr [+-=] [ASacdistu] 文件或目录
  • lsattr [-adR] 文件或目录

文件特殊权限:SUID SGID SBIT

太多啦。。暂略 要想看留言

观察文件类型:file

[admin@jw-test ~]$ file ~/.bashrc
/home/admin/.bashrc: ASCII text

命令与文件查找

which [-a] command 查找执行文件

[admin@jw-test ~]$ which -a node
/usr/bin/node
[admin@jw-test ~]$ which node
/usr/bin/node
[admin@jw-test ~]$ which ifconfig
/usr/sbin/ifconfig
[admin@jw-test ~]$ which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
        /usr/bin/alias
        /usr/bin/which
[admin@jw-test ~]$ which history // history 是bash内置命令 所以找不到
/usr/bin/which: no history in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/admin/.local/bin:/home/admin/bin)

文件查找 whereis [-nmsu] 文件或目录

[admin@jw-test ~]$ whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[admin@jw-test ~]$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz

locate [-iclSr] keyword

[admin@jw-test ~]$ locate nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default

每天更新一次自己的数据库 有时候会查不到,手动更新 updatedb

find [PATH] [option] [action]

  • atime n : 在过去n天内被读取过的文件
  • cmin n : 在过去 n 分钟内被修改过
  • cnewer file :比文件 file 更新的文件
  • ctime n : 在过去n天内被修改过的文件
  • mtime [num+-]
    • +4 五天前
    • -4 小于等于4天
    • 4 4-5 那一天
  • ...

文件系统的简单操作

df [-ahikHTm] [目录或文件名] 列出文件系统的整体磁盘使用量

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示
[admin@jw-test /]$ df 将系统内所有的文件系统列出来!
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs         7768864        0   7768864   0% /dev
tmpfs            7779208        0   7779208   0% /dev/shm
tmpfs            7779208     1264   7777944   1% /run
tmpfs            7779208        0   7779208   0% /sys/fs/cgroup
/dev/vda1      103080204 74690584  23969392  76% /
tmpfs            1555844        0   1555844   0% /run/user/0
tmpfs            1555844        0   1555844   0% /run/user/1000
[admin@jw-test /]$ df -h 将容量结果以易读的容量格式显示出来
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.5G     0  7.5G   0% /dev
tmpfs           7.5G     0  7.5G   0% /dev/shm
tmpfs           7.5G  1.3M  7.5G   1% /run
tmpfs           7.5G     0  7.5G   0% /sys/fs/cgroup
/dev/vda1        99G   72G   23G  76% /
tmpfs           1.5G     0  1.5G   0% /run/user/0
tmpfs           1.5G     0  1.5G   0% /run/user/1000
[admin@jw-test /]$ df -aT 将系统内的所有特殊文件格式及名称都列出来
Filesystem     Type        1K-blocks     Used Available Use% Mounted on
sysfs          sysfs               0        0         0    - /sys
proc           proc                0        0         0    - /proc
devtmpfs       devtmpfs      7768864        0   7768864   0% /dev
securityfs     securityfs          0        0         0    - /sys/kernel/security
tmpfs          tmpfs         7779208        0   7779208   0% /dev/shm
devpts         devpts              0        0         0    - /dev/pts
tmpfs          tmpfs         7779208     1264   7777944   1% /run
tmpfs          tmpfs         7779208        0   7779208   0% /sys/fs/cgroup
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/systemd
pstore         pstore              0        0         0    - /sys/fs/pstore
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/net_cls,net_prio
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/cpu,cpuacct
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/hugetlb
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/pids
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/blkio
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/perf_event
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/memory
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/freezer
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/devices
cgroup         cgroup              0        0         0    - /sys/fs/cgroup/cpuset
configfs       configfs            0        0         0    - /sys/kernel/config
/dev/vda1      ext4        103080204 74690852  23969124  76% /
systemd-1      -                   -        -         -    - /proc/sys/fs/binfmt_misc
mqueue         mqueue              0        0         0    - /dev/mqueue
hugetlbfs      hugetlbfs           0        0         0    - /dev/hugepages
debugfs        debugfs             0        0         0    - /sys/kernel/debug
tmpfs          tmpfs         1555844        0   1555844   0% /run/user/0
tmpfs          tmpfs         1555844        0   1555844   0% /run/user/1000
sunrpc         rpc_pipefs          0        0         0    - /var/lib/nfs/rpc_pipefs
nfsd           nfsd                0        0         0    - /proc/fs/nfsd
binfmt_misc    binfmt_misc         0        0         0    - /proc/sys/fs/binfmt_misc
[admin@jw-test /]$ df -h /home/
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        99G   72G   23G  76% /

du:检查磁盘空间使用量

fdisk:用于磁盘分区

过去24小时修改过的
[admin@jw-test ~]$ find / -mtime 0
/tmp
/tmp/tomcat-docbase.3093306490971783601.9107
/tmp/yum_save_tx.2021-06-29.15-07.bLToON.yumtx
/tmp/ssh-hGNomDUh7i
/tmp/ssh-hGNomDUh7i/agent.13153
对比两个文件的新旧
[admin@jw-test ~]$ find /data/nodesh/ypt-admin-nuxt/ypt-admin-nuxt-v2.zip /data/nodesh/cloud_platform_admin/cloud_platform_admin.zip
/data/nodesh/ypt-admin-nuxt/ypt-admin-nuxt-v2.zip
/data/nodesh/cloud_platform_admin/cloud_platform_admin.zip
chown admin:admin -R ./cloud_platform_admin/

touch [-acdmt] 新建文件

非纯文本文件 od

  • -t 接类型
    • a 以默认字符输出
    • c 以ASCII字符输出
    • d 十进制
    • f 浮点数
    • o 八进制
    • x 十六进制
[admin@jw-test data]$ od -t c /usr/bin/passwd
0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0

在js中 '2' > '11' // true, 可以通过liunx来查看'2'的ASCII大于'11'的ASCII

[admin@jw-test .pm2]$ node
Welcome to Node.js v16.4.0.
Type ".help" for more information.
> '1'>'11'
false
> '2'>'11'
true
>
(To exit, press Ctrl+C again or Ctrl+D or type .exit)
>
[admin@jw-test .pm2]$ echo '2' | od -t oCc
0000000 062 012
          2  \n
0000002
[admin@jw-test .pm2]$ echo '11' | od -t oCc
0000000 061 061 012
          1   1  \n
0000003

示例

复制文件给其他用户

  • 复制文件 cp ~/.bashrc ~admin/bashrc
  • 修改权限 chowm admin:admin ~admin/bashrc

建立目录,给admin账号管理,其他人不能修改 drwxr-xr-x

  • 建立目录:mkdir /data/admin
  • 修改属性:chown -R admin:admin /data/admin
  • 修改权限:chmod -R 755 /data/admin

netstat 查看本机和网络连接的后门

  • netstat [rn] 与路由有关
  • netstat [antulpc] 与网络接口有关的参数

列出路由表状态

[root@iZbp1g4ytp0whqz29e5dyfZ ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         1.1.1.253  0.0.0.0         UG        0 0          0 eth0
1.1.1.0    0.0.0.0         255.255.240.0   U         0 0          0 eth0

列出当前的所有网络连接

[root@iZbp1g4ytp0whqz29e5dyfZ ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN
...
unix  3      [ ]         STREAM     CONNECTED     21941    /run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     21839
unix  2      [ ]         DGRAM                    19596
unix  2      [ ]         STREAM     CONNECTED     10886707
unix  2      [ ]         STREAM     CONNECTED     10886752
unix  3      [ ]         STREAM     CONNECTED     226275
Active Bluetooth connections (servers and established)
Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
Proto  Destination       Source            State     Channel
    

列出当前已经启动的网络服务

[root@iZbp1g4ytp0whqz29e5dyfZ ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      33822/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      694897/sshd
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      39208/src/redis-ser
tcp6       0      0 :::80                   :::*                    LISTEN      33822/nginx: master
tcp6       0      0 :::33060                :::*                    LISTEN      31374/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      31374/mysqld
tcp6       0      0 :::6379                 :::*                    LISTEN      39208/src/redis-ser
udp        0      0 127.0.0.1:323           0.0.0.0:*                           694929/chronyd
udp6       0      0 ::1:323                 :::*                                694929/chronyd

服务名称与port Number对应关系是哪个文件来设置的?

/etc/services

文字接口下载器wget

  • wget [option] [网址]
  • vim /etc/wgetrc 设置代理

SSH 文字接口连接服务器

  • 启动SSH服务 /etc/init.d/sshd restart
  • netstat -tlnp | grep ssh
  • 登录远程主机 ssh admin@1.1.1.1 -p 22
  • 待续

SFTP 模拟FTP的文件传输方式

  • sftp admin@1.1.1.1

实例操作

使用用户admin把本机的/etc/hosts上传到admin用户目录 并将.bashrc复制到本地的/tmp目录

sftp> sftp admin@1.1.1.1 // 登录
sftp> put /etc/hosts // 上传
sftp> get .bashrc // 下载
sftp> exit // 退出

SCP 文件异地直接复制

  • scp [-pr] [-l 速率] file [账号@]主机:目录名 // 上传
  • scp [-pr] [-l 速率] [账号@]主机:file 目录名 // 下载

其它暂存

[root@iZbp1he26e8gmdfzc9162rZ logs]# ps -ef | grep 9452
root      9452 24517  0 11:03 ?        00:00:00 node /data/nodesh/ypt-public-nuxt-express/src/index.js
root     10145 22214  0 11:04 pts/4    00:00:00 grep --color=auto 9452

// PID 9452
[root@iZbp1he26e8gmdfzc9162rZ logs]# ps -x | grep 9452
 9452 ?        Ssl    0:00 node /data/nodesh/ypt-public-nuxt-express/src/index.js

// PID 10938
[root@iZbp1he26e8gmdfzc9162rZ logs]# netstat -anp | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      10938/node /data/no

// PID 10938
[root@iZbp1he26e8gmdfzc9162rZ logs]# ps aux | grep node
root     10938  0.4  0.1 632944 27568 ?        Ssl  11:06   0:00 node /data/nodesh/ypt-public-nuxt-express/src/index.js
root     11577  0.0  0.0 112808   968 pts/4    S+   11:07   0:00 grep --color=auto node
root     12378  0.1  0.1 625304 22632 ?        Ssl  10:17   0:03 node /data/nodesh/ypt-admin-nuxt/start.js
root     12390  0.1  0.1 625092 22580 ?        Ssl  10:17   0:04 node /data/nodesh/ypt-admin-nuxt-2/start.js
root     12455  0.0  0.6 994372 105772 ?       Sl   10:17   0:02 node /data/nodesh/ypt-admin-nuxt/node_modules/.bin/nuxt start
root     12462  0.0  0.5 966500 80468 ?        Sl   10:17   0:02 node /data/nodesh/ypt-admin-nuxt-2/node_modules/.bin/nuxt start
[root@iZbp1he26e8gmdfzc9162rZ logs]# ps aux | grep pm2
admin     1452  0.0  0.2 910340 34560 ?        Ssl  May26   6:21 PM2 v4.5.6: God Daemon (/home/admin/.pm2)
root      3949  0.0  0.2 840644 42532 ?        Ssl  May06   0:19 PM2 v4.5.6: God Daemon (/root/.pm2)
root      5954  0.0  0.1 632736 28248 ?        Ssl  10:33   0:00 PM2 v4.5.6: God Daemon (/root/.pm2)
dev       9070  0.0  0.2 828044 36464 ?        Ssl   2020  12:55 PM2 v4.4.1: God Daemon (/home/dev/.pm2)
root     11976  0.0  0.0 112812   968 pts/4    S+   11:08   0:00 grep --color=auto pm2
root     24517  0.0  0.2 910804 40004 ?        Ssl  May26  17:32 PM2 v4.5.6: God Daemon (/root/.pm2)
dev      26431  4.9 13.8 2976332 2222308 ?     Ssl  May06 3529:07 PM2 v4.5.6: God Daemon (/home/dev/.pm2)

未完待续

文章跟随我读书的进度持续更新