Bootstrap

01Linux-常用命令(重要)

linux

1、常用命令

ll

#显示文件的创建时间
[root@centos02 wy]# ls -l --time-style=long-iso
#文件按时间倒序排序
[root@localhost ~]# ll -lt
#查看目录
[root@localhost ~]# ll -d 

花括号 {}

在Shell脚本中,`{
    }`(花括号)有多种用途,下面介绍几个常见的用法:

1. 命令组合:`{
    }`可以用于将多个命令组合在一起,并作为一个整体进行处理。例如,可以使用`{
    }`将多个命令放在一起,并使用分号或换行符进行分隔:

```shell
{
    
    command1
    command2
    command3
}


在上面的示例中,`command1``command2``command3`将作为一个整体来执行。

2. 数组元素引用:`{
   }`可以用于引用数组中的元素。例如,`${array[1]}`表示数组`array`的第2个元素。

3. 字符串替换:`{
   }`可以用于字符串替换操作。例如,`${var/foo/bar}`表示将字符串`var`中的第一个匹配到的`foo`替换为`bar`4. 参数扩展:`{
   }`可以用于参数扩展,用于获取变量的一部分。例如,`${var:1:3}`表示获取变量`var`的第2个到第4个字符。

5. 范围扩展:`{
   }`可以用于生成数字范围。例如,`{
   1..5}`表示生成从1到5的数字序列。

6. Brace扩展:`{
   }`可以用于生成多个类似的字符串。例如,`file{
   1..3}.txt`表示生成`file1.txt``file2.txt``file3.txt`。

需要注意的是,`{
   }`在Shell中是有特殊含义的,所以在使用时需要注意转义或引用。如果要使用普通的花括号字符,可以使用转义字符`\`进行转义。

总的来说,`{
   }`在Shell脚本中具有多种用法,可以用于命令组合、数组引用、字符串替换、参数扩展、范围扩展等操作,可以帮助实现更灵活和复杂的脚本逻辑。

运行级别

	运行级别:  0关机
				1单用户
				2多用户状态没有网络服务
				3多用户状态有网络服务
				4系统未使用保留给用户
				5图形界面
				6系统重启
		常用级别:3/5,要修改默认的运行级别可改文件 /etc/inittab的id:5:initdefault:这一行的数字
		设置级别是6的话,如何修改:   
		    1、  init  3  //命令行
			2、  init  5  //图形化
			3、  init  0  //关机 
		   在/etc/inittab中将id:5改成id:3。开机直接进入命令行模式

在这里插入图片描述
在这里插入图片描述

pstree

#安装包
[root@localhost ~]# yum -y install psmisc
#显示进程id
[root@localhost ~]# pstree -p 
#显示完整的命令
[root@localhost ~]# pstree -a
#



ps

#显示所有进程信息
ps -A
#显示指定用户信息
ps -u root 
ps -u yiibai
#显示所有进程信息,连同命令行
ps -ef
#ps 与grep 常用组合用法,查找特定进程
ps -ef|grep ssh
#列出目前所有的正在内存当中的程序
ps aux
#显示当前终端的所有进程信息
ps -a
#以用户的格式显示进程信息
ps -u
#显示后台进程运行的参数
ps -x 

在这里插入图片描述

在这里插入图片描述

top

如果想要动态的显示进程信息,就可以使用top命令
默认情况下,它会显示运行在服务器上最占用CPU的任务,并每3s更新列表
标识符(PID)、内存使用(%MEM)、优先级(PR)、命令名称(COMMAND)等
top - 23:54:07 up  6:35,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 121 total,   1 running, 119 sleeping,   0 stopped,   1 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1862792 total,   845864 free,   753080 used,   263848 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   949564 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                               
  1452 root      20   0 1104804  39760   7388 S   0.7  2.1   0:22.18 BT-Task                                                               
  1327 mysql     20   0 1569768 530496   9800 S   0.3 28.5   0:32.67 mysqld                                                                
     1 root      20   0  191040   4032   2584 S   0.0  0.2   0:01.14 systemd                                                               
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd                                                              
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                          
     5 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kworker/u256:0                                                        
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.08 ksoftirqd/0                                                           
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/0                                                           
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                
     9 root      20   0       0      0      0 S   0.0  0.0   0:11.11 rcu_sched                                                             
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                         
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.19 watchdog/0      




| up | 系统已开机多长时间 |
| top  | 系统当前时间 |
| user  | 当前用户数 |
| load average cpu |  平均负载,三个数值分别为,1分钟,5分钟,15分钟 
					  1、按1之后,显示1个CPU
					  2、只要load average 没有超过  cpu个数*1.00  说明系统是健康的
                      3、单核是1.00  双核是2.00 |
                      
| Tasks  |  当前进程数total:总进程running:正在运行sleeping:睡眠stopped:停止进程zombie:僵尸|
| Mem  | 内存使用信息total:总内存free:空闲的内存used:已使用的内存buff/cache:缓存的内存大小 |
| Swap | 虚拟内存信息 |
| PID | 进程id |
| USER | 进程所有者 |
| PR | 优先级 |
|RES   | 进程使用的物理内存大小 |
| SHR  | 共享内存大小 |
| S | 进程状态,D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程 |
| %CPU  | 进程使用的CPU占用百分比 |
| %MEM | 进程使用的物理内存百分比 |
|TIME+  | 进程使用的CPU时间总计 |
| COMMAND |  命令名|

shift+N – 以 PID 的大小的顺序排列表示进程列表
shift+P – 以 CPU 占用率大小的顺序排列进程列表
shift+M – 以内存占用率大小的顺序排列进程列表
1   输入1 按多核模式展示

#指定top命令每隔几秒更新,默认是3s可以执行的命令
[root@localhost ~]# top -d 0.1
#不显示任何闲置或僵死进程
[root@localhost ~]# top -d 0.1 -i

#-p指定进程号
[root@localhost ~]# top  -d 0.1 -p 323
#监听特定用户
先执行top之后,输入u之后,输入用户名,即可监控特定的用户

#查找僵尸进程
[root@localhost ~]# ps aux | grep 'Z'
[root@localhost ~]# ps -e -o ppid,stat | grep Z
#不显示闲置进程
先执行top之后,输入i之后,输入用户名,即可去除闲置进程

#显示command命令
先执行top之后,输入c之后,输入用户名,即可显示command 的参数的全显

在这里插入图片描述

在这里插入图片描述

cd

#进入根目录
[root@localhost ~]#cd  /  
#回到家目录
[root@localhost ~]#cd  ~
#返回进入此目录之前所在的目录  
[root@localhost ~]#cd -

cp

#复制保留源文件的属性
[root@localhost ~]#cp -p  xxx.log   aaaa.log

column

`column`是一个用于格式化文本列的命令,可以在Shell脚本中使用。它可以将文本按照指定的列数进行格式化,并可以指定分隔符和对齐方式。

`column`命令的基本语法如下:

```shell
column [选项] [文件]

其中,选项可以是以下之一:

  • -t:根据空格或制表符进行分隔,并将文本格式化为表格。
  • -s 分隔符:使用指定的分隔符进行分隔。
  • -o 输出分隔符:指定输出时使用的分隔符。
  • -n 列数:指定输出的列数。
  • -c 列宽:指定每列的宽度。
  • -x:使用多个空格作为分隔符。
  • -R:右对齐文本。
  • -C:居中对齐文本。

文件表示要进行格式化的文本文件。

以下是一些使用column命令的示例:

  1. 格式化文本为表格形式:
column -t file.txt
  1. 使用制表符作为分隔符进行格式化:
column -s $'\t' file.txt
  1. 指定输出分隔符为逗号:
column -o ',' file.txt
  1. 指定输出的列数为3:
column -n 3 file.txt
  1. 指定每列的宽度为10个字符:
column -c 10 file.txt
  1. 右对齐文本:
column -R file.txt
  1. 居中对齐文本:
column -C file.txt


在上面的示例中,`column`命令会根据指定的选项对文本进行格式化,并将结果输出到标准输出。可以将输出重定向到文件中,以便进一步处理或保存结果。

`column`命令在处理表格数据、对齐文本等场景中非常有用。它可以帮助提高文本的可读性和可视化效果。

echo

#不换行输出
echo -n 
#解析字符串中特殊符号
[root@localhost ~]# echo -e "\n  123 \n   456"
#输出今天的时间
echo "`date`"
#输出系统语言
echo $LANG

expect

`expect`是一个用于自动化交互式任务的工具,它可以在Shell脚本中使用。`expect`脚本可以模拟用户与命令行程序之间的交互,实现自动化的任务执行。

以下是一个使用`expect`的Shell脚本示例:

```shell
#!/usr/bin/expect

# 设置超时时间
set timeout 10

# 运行命令
spawn ssh user@host

# 匹配并发送密码
expect "password:"
send "password123\r"

# 匹配特定的输出并做出相应的响应
expect {
    
    "Permission denied" {
    
        puts "登录失败"
        exit 1
    }
    "Last login" {
    
        puts "登录成功"
        # 执行其他命令
        send "ls -l\r"
        expect "logout"
        puts "执行命令完成"
    }
}

# 关闭连接
send "exit\r"
expect eof

在上面的示例中,`expect`脚本首先通过`spawn`命令启动一个新的进程(例如SSH会话)。然后,使用`expect`命令匹配命令输出中的特定字符串,并使用`send`命令发送相应的响应。

`expect`命令可以使用正则表达式来匹配字符串。在匹配成功后,可以执行相应的操作,如发送命令、打印消息等。

在脚本中,可以通过`set timeout`命令设置超时时间,以避免在等待输出时无限等待。

需要注意的是,`expect`脚本需要在Shell中执行,而不是直接运行。可以使用`#!/usr/bin/expect`作为脚本的第一行,或者在Shell中使用`expect`命令来执行脚本。

使用`expect`脚本可以实现各种自动化任务,如自动登录远程服务器、自动执行命令、自动配置应用程序等。它在自动化测试、系统管理和网络操作等场景中非常有用。

mkdir

在Shell脚本中,`exec`命令用于替换当前进程,执行指定的命令或程序。它会终止当前进程,并用新的进程替代它。

`exec`命令的基本语法如下:

```shell
exec [选项] [命令]

其中,选项可以是以下之一:

  • -a file:将文件作为参数传递给新进程。
  • -c:清除环境变量。
  • -l:使新进程以登录shell的方式启动。
  • -n:禁用Shell作为新进程的解释器。
  • -p:保留当前进程的PID。
  • -u:设置新进程的用户ID。

命令表示要执行的命令或程序。

以下是一些使用exec命令的示例:

  1. 替换当前进程为ls命令:
exec ls
  1. 替换当前进程为echo命令,并传递参数:
exec echo "Hello, world!"
  1. 替换当前进程为另一个Shell脚本:
exec ./another_script.sh
  1. 使用-l选项以登录shell的方式启动新进程:
exec -l bash
在上面的示例中,exec命令会终止当前进程,并用指定的命令或程序替代它。这意味着在exec命令之后的所有代码都不会被执行。

需要注意的是,exec命令是一个非常强大且危险的命令,因为它会完全替换当前进程,可能导致意外的结果。在使用exec命令时,务必谨慎,并确保理解其用途和影响。


在上面的示例中,`exec`命令会终止当前进程,并用指定的命令或程序替代它。这意味着在`exec`命令之后的所有代码都不会被执行。

需要注意的是,`exec`命令是一个非常强大且危险的命令,因为它会完全替换当前进程,可能导致意外的结果。在使用`exec`命令时,务必谨慎,并确保理解其用途和影响。

mv

mv 文件名  文件名 移动或重命名
;