Linux基础三

news2024/9/20 0:49:35

 拼搏何惧路途难, 汗水淋漓志未残。 砥砺前行心不改, 终能登顶笑开颜。

目录

一,vi编辑器

1,命令模式

2,末行模式

3,编辑模式

二,Linux进程启动的几种方式

2.1前台启动进程

2.2后台启动进程

三,ps查看正在运行的进程

四,实时监听正在运行的进程 top

五,Linux查看进程数 pstree

六,Linux终止进程 kill

 七,Linux将后台命令脱离终端运行 nohup

一,vi编辑器

vi编辑器是效率很高的文本编辑器。它可以执行输出,删除,查找,替换,块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

1,命令模式

打开文件首先进入命令模式,是使用vi的入口

通过命令对文件进行常规的编辑操作,例如定位,翻页,复制,粘贴,删除

在其他图形编辑器下,通过快捷键或者鼠标实现的操作,都在命令模式下实现

2,末行模式

保存,退出等操作

要退出vi返回到控制台,需要在末行模式下输入命令

末行模式是vi的出口

3,编辑模式

正常的编辑文字

 


u 【撤销 恢复】
 
-------------------进入编辑模式start----------------------
i 【输入 ,光标不动】
I 【输入,光标前面】
a 【输入 ,光标退后一个】
A 【输入 ,光标到行末尾】
s 【输入 ,光标删除所在字符】
S 【输入 ,光标删除所在整行】
-------------------进入编辑模式end----------------------
 
:wq 【保存退出】
:q! 【强制退出,不保存】
h 【左】
j 【下】
k 【上】
l 【右】
5G 【跳转到多行】 【不常用】
gg 【第一行】
G 【最后一行】
:set number 【显示行号】
$ 【行尾】
0 【行首】
dw 【删除单词】
dd 【删除一行】
3dd 【删除三行】
yy 【复制一行】
dd 【剪切一行】
p 【刚刚yy、dd复杂/剪切的,粘贴到当前光标行】
P 【刚刚yy,dd复杂剪切的,粘贴到下一行】
/define【查找 define内容】
r + p 【把当前光标的字符替换成 p】
:s /printf/printxxx 【光标所在行,替换成printxxx】
1,6s /printf/printxxx/g 【1 ~ 6行 替换成printxxx,默认从第一行开始】
:%s /printf/printxxx/g 【整个代码,把所有的printf 替换 printxxx】
:vsp 【左右两个屏幕】
:sp 【上下两个屏幕】
ctrl + ww 【切换屏幕】
q 【退出当前屏幕】
wqall 【退出全部屏幕】

二,Linux进程启动的几种方式

手动启动进程指的是由用户输入命令直接启动一个进程,根据所启动的进程类型和性质的不同,其又可以细分为前台启动和后台启动2种方式。

2.1前台启动进程

这是手动启动进程最常用的方式,因为当用户输入一个命令并运行,就已经启动了一个进程,而且是一个前台的进程,此时系统其实已经处于一个多进程的状态。

查看进程:


(base) zhengguiliang 20:37:42 ~/yz
$ ps
    PID TTY          TIME CMD
 802176 pts/2    00:00:00 bash
 802771 pts/2    00:00:00 ps

将进程挂起,指的是将前台运行的进程放到后台,并且暂停其运行。

2.2后台启动进程

进程直接从后台运行,用的相对较少,除非该进程非常耗时,且用户也不着急需要其运行结果的时候。

从后台启动进程,其实就是在命令结尾处添加一个“& ”符号(注意,&前面有空格)。输入命令并运行之后,Shell会提供给我们一个数字,此数字就是该进程的进程号。然后直接就会出现提示符,用户就可以继续完成其他工作。


(qiime2-amplicon-2024.2) zhengguiliang 21:00:40 ~/yz
$ conda activate /share/Software/miniforge3/envs/qiime2-amplicon-2024.2  &

三,ps查看正在运行的进程


(qiime2-amplicon-2024.2) zhengguiliang 21:00:52 ~/yz
$ ps aux   #查看系统中所有的进程,使用BS操作系统格式
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0 239172 11716 ?        Ss   Jul03   2:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
root           2  0.0  0.0      0     0 ?        S    Jul03   0:19 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul03   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   Jul03   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   Jul03   0:00 [slub_flushwq]
root           7  0.0  0.0      0     0 ?        I<   Jul03   0:00 [kworker/0:0H-events_highpri]
root           9  0.0  0.0      0     0 ?        I    Jul03   0:00 [kworker/u256:0-netns]
root          11  0.0  0.0      0     0 ?        I<   Jul03   0:00 [mm_percpu_wq]
root          12  0.0  0.0      0     0 ?        S    Jul03   0:00 [rcu_tasks_rude_]
root          13  0.0  0.0      0     0 ?        S    Jul03   0:00 [rcu_tasks_trace]
root          14  0.0  0.0      0     0 ?        S    Jul03   0:00 [ksoftirqd/0]
root          15  0.0  0.0      0     0 ?        I    Jul03  14:38 [rcu_sched]
root          16  0.0  0.0      0     0 ?        S    Jul03   0:00 [migration/0]
root          17  0.0  0.0      0     0 ?        S    Jul03   0:00 [watchdog/0]
root          18  0.0  0.0      0     0 ?        S    Jul03   0:00 [cpuhp/0]

(qiime2-amplicon-2024.2) zhengguiliang 21:05:06 ~/yz
$ ps -le   #查看系统种所有的进程 使用Linux标准命令格式
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0       1       0  0  80   0 - 59793 -      ?        00:02:06 systemd
1 S     0       2       0  0  80   0 -     0 -      ?        00:00:19 kthreadd
1 I     0       3       2  0  60 -20 -     0 -      ?        00:00:00 rcu_gp
1 I     0       4       2  0  60 -20 -     0 -      ?        00:00:00 rcu_par_gp
1 I     0       5       2  0  60 -20 -     0 -      ?        00:00:00 slub_flushwq
1 I     0       7       2  0  60 -20 -     0 -      ?        00:00:00 kworker/0:0H-events_highpri
1 I     0       9       2  0  80   0 -     0 -      ?        00:00:00 kworker/u256:0-netns
1 I     0      11       2  0  60 -20 -     0 -      ?        00:00:00 mm_percpu_wq
1 S     0      12       2  0  80   0 -     0 -      ?        00:00:00 rcu_tasks_rude_
1 S     0      13       2  0  80   0 -     0 -      ?        00:00:00 rcu_tasks_trace
1 S     0      14       2  0  80   0 -     0 -      ?        00:00:00 ksoftirqd/0
1 I     0      15       2  0  80   0 -     0 -      ?        00:14:38 rcu_sched
1 S     0      16       2  0 -40   - -     0 -      ?        00:00:00 migration/0
5 S     0      17       2  0 -40   - -     0 -      ?        00:00:00 watchdog/0
1 S     0      18       2  0  80   0 -     0 -      ?        00:00:00 cpuhp/0
1 S     0      19       2  0  80   0 -     0 -      ?        00:00:00 cpuhp/1
5 S     0      20       2  0 -40   - -     0 -      ?        00:00:01 watchdog/1
1 S     0      21       2  0 -40   - -     0 -      ?        00:00:00 migration/1

四,实时监听正在运行的进程 top

ps命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行ps命令,这显然是缺乏效率地。

为此,Linux提供了top命令。top命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己地输出,进而更清除地了解进程的运行状态。

top -d 秒数: 指定top命令每隔几秒更新。默认是3秒
top -b :使用批处理模式输出。一般和-n选项合用,用于把top命令重定向到文件中
top -n 次数:指定top命令执行的次数。一般和-选项合用
top -p 进程PID:仅查看指定ID的进程
top -s :使top命令在安全模式中运行,避免在交互模式中出现错误
top -u 用户名:只监听某个用户的进程

在top命令的显示窗口中,还可以使用如下按键去,进行一下交互操作:

?或h:显示交互模式的帮助
P:按照CPU的使用频率排序,默认就是此选项
M:按照内存的使用率排序
N:按照PID排序
T:按照CPU的累积运算时间排序,也就是按照TIME+项排序
k:按照PID给予某个进程一个信号,一般用于中止某个进程,信号9是强制中止的信号
r:按照PID给某个进程重设优先级(Nice)值
q: 退出top命令

五,Linux查看进程数 pstree

pstree命令是以树形结构显示程序和进程之间的关系

其优点在于您可以立即找出某进程的父进程:当您想到终止整个进程系列而且其中存在了许许多多的下属分支进程,您只需要终止最上层的进程即可。


(qiime2-amplicon-2024.2) zhengguiliang 21:22:44 ~/yz
$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{auditd}]
        ├─avahi-daemon───avahi-daemon
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─dbus-kill-proce───gio───2*[{gio}]
        ├─dnsmasq───dnsmasq
        ├─firewalld───2*[{firewalld}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfsd───2*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─irqbalance───{irqbalance}
        ├─ksmtuned───sleep
        ├─lsmd
        ├─mysqld───96*[{mysqld}]
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───11*[{polkitd}]
        ├─rpcbind
        ├─rserver───3*[{rserver}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd─┬─sshd───sshd─┬─bash
        │      │             └─sftp-server
        │      ├─5*[sshd───sshd───sftp-server]
        │      └─sshd───sshd───bash───pstree
        ├─systemd─┬─(sd-pam)
        │         └─dbus-daemon
        ├─2*[systemd─┬─(sd-pam)]
        │            ├─dbus-daemon]
        │            └─pulseaudio───{pulseaudio}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-machine
        ├─systemd-udevd
        ├─tuned───3*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

如果提示pstree:command not found  则说明系统没有安装pstree,安装命令如下

yum install psmisc

需要注意的是,在使用pstree命令时,如果不指定进程的PID号,也不指定用户名称,则会以init进程为跟进程,显示系统中所有程序和进程的信息;反之,若指定PID号或用户名,则将以PID或指定命令为根进程,显示PID或用户对应的所有程序和进程。

六,Linux终止进程 kill

kill命令的执行原理是这样的,kill命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

kill [信号] PID

kill命令是按照PID来确定进程的,所以kill命令只能识别PID,而不能识别进程名。Linux定义了几十种不同类型的信号,可以使用kill -l命令查看所有信号及其编号,这里仅列出几个常用的信号:

注意:不要随便使用kill -9来强制结束进程。这会导致数据丢失

 七,Linux将后台命令脱离终端运行 nohup

当我们以远程管理服务器的方式,在远程终端执行后台命令,如果在命令尚未执行完毕时就退出登录,那么这个后台命令还会继续执行吗?

当然不会,此命令的执行会被中断。

使用nohup命令,就是让后台工作在离开操作终端时,也能够正确地在后台执行。

nohup [命令] &

注意:这里的& 表示此命令会在终端后台工作,反之,如果没有&,则表示此命令会在终端前台工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git 创建分支进行写作开发

第一次链接仓库提交 and 有SSH公匙 第一步&#xff1a; git clone 远程仓库链接clone 远程已有仓库到本地 第二部&#xff1a; cd 文件夹 第三步&#xff1a; git checkout -b <your_branch_name> 创建分支 第四步&#xff1a; git add . 将目前目录下的所有文件…

加密micropython写的程序为.mpy的方法

2024年7月26日 用虚拟机安装一个Linux&#xff0c;本例为CentOS7的Linux系统。 1.保证Linux能够连接网络。 2.进入root用户&#xff0c;使用下面的命令行安装gcc编译器&#xff1a; yum install gcc 3.安装完成后&#xff0c;查看gcc是否安装成功&#xff0c;用下面的命令…

Java从入门到精通(十三)~ 枚举和注解

晚上好&#xff0c;愿这深深的夜色给你带来安宁&#xff0c;让温馨的夜晚抚平你一天的疲惫&#xff0c;美好的梦想在这个寂静的夜晚悄悄成长。 文章目录 目录 前言 一、枚举 1.1 枚举的概念 ​编辑 1.2 枚举的特点 1.3 枚举的实际运用 1. 状态机&#xff0c;描述属性的…

App Inventor 2 低功耗蓝牙 BlueToothLE 拓展中文文档(完整翻译加强版)

低功耗蓝牙&#xff0c;也称为蓝牙LE 或简称 BLE&#xff0c;是一种类似于经典蓝牙的新通信协议&#xff0c;不同之处在于它旨在消耗更少的功耗和成本&#xff0c;同时保持同等的功能。 因此&#xff0c;低功耗蓝牙是与耗电资源有限的物联网设备进行通信的首选。BluetoothLE 扩…

【C++】C++11中R字符串的作用

在 C11 中添加了定义原始字符串的字面量 1.定义和基本使用 定义方式为&#xff1a; R"xxx(原始字符串)xxx"其中 () 两边的字符串可以省略&#xff0c;R只会处理括号中的字符串。 原始字面量 R 可以直接表示字符串的实际含义&#xff0c;而不需要额外对字符串做转义…

文件系统基础 (二)——文件的物理结构

目录 一. 前言二. 连续(顺序)分配三. 链接分配隐式链接显式链接 三. 索引分配单级索引分配多级索引分配混合索引分配混合索引分配相关计算 五. 总结 一. 前言 文件的物理结构就是研究文件的实现&#xff0c;即文件数据在物理存储设备上是如何分布和组织的。 文件的分配方式&a…

【计算机网络原理】网络层IP协议的总结和数据链路层以太网协议的总结.

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

anaconda searchanaconda show | conda 检索包资源安装指定版本包指定源安装命令package

conda issuehttp://t.csdnimg.cn/ndZZK 目录 常规安装 检索包资源 获取指定包的安装源&安装指令 安装指定包 常规安装 conda 常规安装xxx包 conda install xxx conda install有可能会受限于channel导致报错PackagesNotFoundError: The following packages are not av…

RedisTemplate、StringRedisTemplate、序列化器配置

Lettuce和Jedis RedisTemplate是SpringDataRedis中对JedisApi的高度封装&#xff0c;提供了Redis各种操作、 异常处理及序列化&#xff0c;支持发布订阅。 首先我们要知道SpringData是Spring中数据操作的模块&#xff0c;包括对各种数据库的集成&#xff0c;比如我们之前学过…

SpringBoot轻松实现多数据源切换

一.需求背景 项目需要实现在多个数据源之间读写数据&#xff0c;例如在 A 数据源和 B 数据源读取数据&#xff0c;然后在 C 数据源写入数据 或者 部分业务数据从 A 数据源中读取、部分从B数据源中读取诸如此类需求。本文将简单模拟在SpringBoot项目中实现不同数据源之间读取数…

数据结构:二分图以及判定二分图

文章目录 一、二分图的基本知识1、特性2、图示3、检查一个图是否为二分图3.1、着色的算法原理和思路3.2、算法示例&#xff1a;使用 BFS 检查二分图3.3、算法示例&#xff1a;使用 DFS 检查二分图 4、应用 二、例题1.LeetCode&#xff1a;785. 判断二分图2.Acwing&#xff1a;8…

软件开发中UML的基本概念与UML类图中存在哪些关系与如何绘制?

UML的概述 UML在维基百科中是这样子描述的 可以使用的工具这里网上说的有些花哨,我自己一般使用processon,里面的UML相关功能就很全。 UML类图的相关概念解释 解释一下什么是类图? 定义系统中的类,描述系统中类的属性和方法,就是描述类的内部结构,表示类与类之间的关…

手摸手教你撕碎西门子S7通讯协议04--S7COMM请求

1、S7通讯回顾 - &#xff08;1&#xff09;建立TCP连接 Socket.Connect-》已实现 - &#xff08;2&#xff09;发送访问请求 COTP-》已实现 - &#xff08;3&#xff09;交换通信信息 Setup Communication-》本节实现 - &#xff08;4&#xff09;执行相关操作 …

诱骗IoT恶意软件跟踪CC服务器

工作背景 在分析 IoT 僵尸网络时&#xff0c;识别C&C 服务器至关重要。C&C 服务器的 IP 地址一直都是商业威胁情报的重要组成部分&#xff0c;由于 C&C 服务器通信协议日渐复杂并且活跃周期较短&#xff0c;时效性和准确性也非常重要。如果可以自动化识别 IoT 恶意…

深度学习实战笔记3循环神经网络实现

我们要训练一个基于循环神经网络的字符级语言模型&#xff0c;根据用户提供的文本的前缀生成后续文本。 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l batch_size, num_steps 32, 35 train_iter, voc…

防震减灾知识竞赛的规则和流程方案

防震减灾知识竞赛的规则主要包括赛制、比赛形式、参赛对象、竞赛内容等方面。 赛制&#xff1a;通常包括选拔赛、分区预赛和全国决赛三个阶段。选拔赛可以根据地区实际情况选择合适的组织形式&#xff0c;预赛和决赛则以现场比赛形式进行&#xff0c;由主办单位统一组织。 比…

掌握 Spring Boot + MyBatis-Plus 动态数据源切换,只要5分钟!

数据量猛增&#xff0c;通过动态数据源切换&#xff0c;我们不仅能提高查询效率&#xff0c;还能保证系统的高可用性。 通过将写操作集中在主库&#xff0c;读操作分散到多个从库&#xff0c;可以有效减轻数据库的压力。 在pom.xml中添加以下依赖&#xff1a; xml <depend…

记录|LabVIEW从0开始

目录 前言一、表达式节点和公式节点二、脚本与公式2.1 公式 三、Excel表格3.1 位置3.2 案例&#xff1a;波形值存入Excel表中3.3 案例&#xff1a;行写入&#xff0c;列写入 四、时间格式化4.1 获取当前时间4.2 对当前时间进行格式化 更新时间 前言 参考视频&#xff1a; LabVI…

hadoop学习(二)

一.MapReduce 1.1定义&#xff1a;是一个分布式运算程序的编程框架 1.2核心功能&#xff1a;将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个Hadoop集群上。 1.3优点 1&#xff09;易于编程 它简单的实现一些接口&#…

从入门到精通:电商设计师的职业发展指南

在当今数字时代&#xff0c;电商设计师的作用越来越重要。从电子商务网站的整体造型设计到产品页面的具体布局&#xff0c;他们的工作范围是电子商务企业成功的关键因素之一。然而&#xff0c;并不是每个人都对这个职业有深刻的理解。因此&#xff0c;在本文中&#xff0c;我们…