心有所向,日复一日,必有精进。|

榴红八色鸫

园龄:3年8个月粉丝:1关注:12

linux与shell 4.检测系统进程 5.理解shell

认识shell

查看已安装的shell

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/sh
/usr/bin/pwsh
/opt/microsoft/powershell/7/pwsh
/bin/zsh
/usr/bin/zsh
/usr/bin/tmux
/usr/bin/screen

查看系统默认shell

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ which sh
/usr/bin/sh
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ls -l /usr/bin/sh
lrwxrwxrwx 1 root root 4 Sep 1 22:11 /usr/bin/sh -> dash

显示当前的shell名称

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ echo $0
bash

输入shell的名称即可切换bash
exit退出bash

shell的父子关系

PID 当前进程的ID
PPID 当前进程的父进程的ID
ps --forest 查看继承关系
ps -f 查看进程的常用详细信息
ps -l 详细信息
实时查看进程 top
结束进程 kill PID

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ps -f
UID PID PPID C STIME TTY TIME CMD
kali 10114 10113 0 Dec26 pts/0 00:00:00 bash
kali 10341 10114 0 14:39 pts/0 00:00:00 ps -f
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ bash
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ps -f
UID PID PPID C STIME TTY TIME CMD
kali 10114 10113 0 Dec26 pts/0 00:00:00 bash
kali 10342 10114 1 14:39 pts/0 00:00:00 bash
kali 10345 10342 0 14:39 pts/0 00:00:00 ps -f
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ps --forest
PID TTY TIME CMD
10114 pts/0 00:00:00 bash
10342 pts/0 00:00:00 \_ bash
10346 pts/0 00:00:00 \_ ps
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ exit
exit
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ps -f
UID PID PPID C STIME TTY TIME CMD
kali 10114 10113 0 Dec26 pts/0 00:00:00 bash
kali 10347 10114 0 14:39 pts/0 00:00:00 ps -f

进程列表

命令列表(命令间用分号分隔)

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ pwd;cd /etc;pwd;echo $BASH_SUBSHELL
/mnt/e/Edgedownload
/etc
0

进程列表(将命令列表放入小括号中)

生成一个子shell执行命令。可以嵌套括号生成子子shell
如何查看是否生成子shell?echo $BASH_SUBSHELL,非0为子shell。

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ (pwd;cd /etc;pwd;echo $BASH_SUBSHELL)
/mnt/e/Edgedownload
/etc
1

灵活运用子shell

后台模式(在命令行末尾加上&,将命令置于后台)

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ sleep 1000&
[1] 10350
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ jobs
[1]+ Running sleep 1000 &

[1] 后台作业号
10350 PID

jobs 查看所有后台进程

将进程放入后台后,终端不再与子shell的IO绑定

协程(coproc)

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ coproc sleep 10;ps --forest
[1] 10354
PID TTY TIME CMD
10114 pts/0 00:00:00 bash
10354 pts/0 00:00:00 \_ sleep
10355 pts/0 00:00:00 \_ ps

coproc与嵌套子进程

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ coproc (sleep 10;sleep 2)
bash: warning: execute_coproc: coproc [10365:COPROC] still exists
[4] 10367
[2] Done coproc COPROC ( sleep 10 )
[3] Done coproc COPROC ( sleep 10 )
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ ps --forest
PID TTY TIME CMD
10114 pts/0 00:00:00 bash
10367 pts/0 00:00:00 \_ bash
10368 pts/0 00:00:00 | \_ sleep
10369 pts/0 00:00:00 \_ ps

协程命名

# 默认名称
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ coproc sleep 10;jobs
[1] 10375
[1]+ Running coproc COPROC sleep 10 &
# 自定义名称 注意格式{空格xxx;空格}
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ coproc MY_COPROC { sleep 10; }
[1] 10372
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ jobs
[1]+ Done coproc MY_COPROC { sleep 10; }

外部命令和内建命令

使用type -a 命令名查看是外部命令还是内建命令
使用which 查看当前使用命令的安装位置

外部命令

位于 .../bin 文件夹中
执行时衍生(创建子进程)

内建命令

和shell集成的命令,高效

┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ type -a echo
echo is a shell builtin <--echo是内建命令
echo is /usr/bin/echo
echo is /bin/echo
[1]+ Done coproc COPROC sleep 10
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ which echo
/usr/bin/echo <--当前使用的echo是外部命令
┌──(kali㉿DESKTOP-FQ0BCLS)-[/mnt/e/Edgedownload]
└─$ type -a ps
ps is /usr/bin/ps <--ps是外部命令
ps is /bin/ps

两个常用的内建命令

history 查看历史使用的命令行
alias 设置命令行别名

本文作者:榴红八色鸫

本文链接:https://www.cnblogs.com/hezexian/p/17008144.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   榴红八色鸫  阅读(49)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起