linux常用命令
- linux
-
- 1、常用命令
-
- ll
- 花括号 {}
- 运行级别
- pstree
- ps
- top
- cd
- cp
- column
- echo
- expect
- mkdir
- mv
- mkdir
- more
- cat
- cut
- head
- cat
- dd
- tail
- cp
- chown
- crontab
- rm
- touch
- stat
- sftp
- read
- df和du
- date
- diff
- cpm
- comm
- uniq
- seq
- sort
- split
- jobs
- free
- file
- find
- exec
- grep
- awk
- sed
- paste
- tr
- tee
- type
- time
- vmstat
- wc
- wait
- last
- ln
- netstat
- history
- xargs
- chkconfig
- yum
- rpm
- 追加到黑洞、收集正确 、收集错误的信息
- 用户信息的文件
- 查看解释器
- 用户和用户组
- 关机重启
- 开机端口
- uptime 开机时间
- 压缩和解压操作
- 组管理
- 修改文件所有者
- 系统信息
- 查看CPU信息
- 查看系统内存信息
- 查看网卡信息
- 配置文件
- 网络ip
- chmod
- rsync文件传输
- scp文件传输
- 2、vi 和vim
- 3、shell
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
命令的示例:
- 格式化文本为表格形式:
column -t file.txt
- 使用制表符作为分隔符进行格式化:
column -s $'\t' file.txt
- 指定输出分隔符为逗号:
column -o ',' file.txt
- 指定输出的列数为3:
column -n 3 file.txt
- 指定每列的宽度为10个字符:
column -c 10 file.txt
- 右对齐文本:
column -R file.txt
- 居中对齐文本:
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
命令的示例:
- 替换当前进程为
ls
命令:
exec ls
- 替换当前进程为
echo
命令,并传递参数:
exec echo "Hello, world!"
- 替换当前进程为另一个Shell脚本:
exec ./another_script.sh
- 使用
-l
选项以登录shell的方式启动新进程:
exec -l bash
在上面的示例中,exec命令会终止当前进程,并用指定的命令或程序替代它。这意味着在exec命令之后的所有代码都不会被执行。
需要注意的是,exec命令是一个非常强大且危险的命令,因为它会完全替换当前进程,可能导致意外的结果。在使用exec命令时,务必谨慎,并确保理解其用途和影响。
在上面的示例中,`exec`命令会终止当前进程,并用指定的命令或程序替代它。这意味着在`exec`命令之后的所有代码都不会被执行。
需要注意的是,`exec`命令是一个非常强大且危险的命令,因为它会完全替换当前进程,可能导致意外的结果。在使用`exec`命令时,务必谨慎,并确保理解其用途和影响。
mv
mv 文件名 文件名 移动或重命名