Command-line Environment

Command-line Environment

任务控制

shell会使用UNIX提供的信号机制去执行进程间的通信,进程收到信号的时候,会基于信号改变其执行

停止

停止任务:^c
信号:SIGINT

在进行find遍历目录时,使用^c,发出SIGINT到该进程,停止了该任务

课程中提供了一个脚本,忽略了SIGINT信号的基本操作也就是终止程序,为了停止可以使用另外一个信号
^\
信号:SIGQUIT

import signal, time
def handler(signum, time):print("\nI got a SIGINT, but i am not stopping")signal.signal(signal.SIGINT,headler)i=0
while True:time.sleep(.1)print("\r".farmat(i),end="")i+=1;

程序接收到了SIGINT信号,但是并不会让该程序停止,这是就可以使用^\来停止该程序

另外还有一个信号也可以用来停止程序
信号:SIGTERM
通过执行kill -TERM <pid>发送该信号

暂停

终端暂停:^z
信号:SIGTSTP

可以使用fg恢复到前台继续,bg恢复到后台继续

使用命令:kill -STOP <pid>
信号:SIGSTOP

主要区别

特性 SIGTSTP SIGSTOP
触发方式 kill或者系统 交互界面^z
是否可捕获 不可捕获、阻塞、忽略 可捕获、阻塞、忽略
典型用途 系统强制暂停 用户暂停

后台

在命令后面加上&,即可让任务在后台执,[[#暂停]]中提到的bg也可以让暂停的任务在后台去执行

当转入后台运行后,终端关闭后会发送一个SIGHUP信号,终止该任务

可以使用nohup忽略SIGHUP信号,可以使用kill <pid>直接结束进程

更多信号信息

终端多路复用

tmux

tmux的结构:

  • 会话:每一个会话都是一个独立的工作区
    • 窗口:相当于一个标签页,将会话分为多个部分
      • 窗格:可以使一个屏幕放多个shell

tmux快速入门

别名

相当于将长命令缩短
定义语法:

alias alias_name="command"

=两边不要有空格

禁用别名语法:

unalias alias_name

获取别名的定义:

alias alias_name

默认别名是不会持续生效的,可以放进shell的启动文件中比如:bashrczshrc

bashrc中的一部分内容

配置文件(Dotfile)

因为.开头,又叫点文件

默认为隐藏文件,shell程序会读取很多文件加载配置项

可以将这些文件统一放到一个目录中,搭配git统一进行管理

远端设备

ssh远端登录

ssh username@server

输入密码即可登录远端的服务器

直接执行命令

ssh username@server ls

SSH密钥

客户端生成密钥对

ssh-keygen -o -a 100 -t rsa -f ~/.ssh/id_rsa


此时~/.ssh/下就会有一个私钥文件和公钥文件

需要将.pub文件上传到服务端上

ssh-copy-id -i id_rsa.pub username@server

然后输入密码,即可将公钥上传到服务端,以后即可直接登录,不需要使用密码验证

SSH的复制

  • ssh+tee
cat filename | username@server tee serverfile
  • scp
scp /path/local_file username@server:/path/server_file
  • rsync
    scp类似

SSH配置

配置~/.ssh/config文件,可以实现别名登录
config

Host vmUser usernameHostName serverIdentityFile ~/.ssh/id_rsa

使用别名即可直接登录

ssh ming

原文章:http://www.ming-ice-tea.top/?p=38

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式开发】探讨下PC端的BLE开发

目前在嵌入式设备端,实现了不少ble的功能。比如音频传输,图片传输。一般要方便演示,需要开发个对应的手机app。但是我又是很偷懒的人。想着,python这个工具这么强大,在PC端可以用python几行代码就实现掉吧? 说干就干! 根据同事的推荐,用了python的bleak蓝牙库。 我是在…

Jmeter 修改Sampler result 结果信息

首先说一下,jmeter的Sampler result是什么? Jmeter 的Samplers result 是jmeter在向服务器发送请求后,接收到服务器响应的基本信息的展示,如 sample 的开始请求时间、发送的内容大小、基于协议的响应状态码和响应消息等信息。 什么是基于协议的响应状态码和响应消息。比如h…

Shell Script

Shell Script 赋值操作 foo=bar echo $foo注意: 不要使用空格分开shell 将会把foo当作一个程序 转义 Bash通过使用和""来定义字符串 ""会将字符串中的变量转义 echo "String is $foo"会将字符串中的变量原样输出 echo String is $foo函数 函数内…

聊一聊 C#前台线程 如何阻塞程序退出

一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug,最后发现是有一个 Backgrond=false 的线程导致的。恰巧在我分析的350+dum…

聊一聊 C#后台线程 如何阻塞程序退出

一:背景 1. 讲故事 这篇文章起源于我的 C#内功修炼训练营里的一位朋友提的问题:后台线程的内部是如何运转的 ? ,犹记得C# Via CLR这本书中 Jeffery 就聊到了他曾经给别人解决一个程序无法退出的bug,最后发现是有一个 Backgrond=false 的线程导致的。恰巧在我分析的350+dum…

offset explorer如何安装?附获取方式

前言 大家好,我是小徐啊。我们在Java开发的时候,有时候需要进行大数据的开发,或者需要使用消息队列,这个时候,就需要用到kafka这个组件了。而对于我们平常运维来说,最好有一个可视化的连接kafka的工具。今天小徐就来介绍一款连接Kafka的工具,是offset explorer,介绍下w…

NUMA的取舍与优化设置

NUMA的取舍与优化设置在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%;在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能。 安装numactl: #yum install numactl -y #numastat 等同于 cat /sys/devices/system/node/node0/numa…

2024-2025-1(20241321)《计算机基础与程序设计》第十三周学习总结

这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十三周作业)这个作业的目标 <深刻学习C语言,反思一周学习,温故知新>作业正文 ... 本博客链接https://www.…

解决 PbootCMS 附件上传报错

根据你提供的信息,PbootCMS 附件上传时报错: 上传失败:UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior; File: /www/wwwroot/aaa.xxxx.com/core/fu…

如何修改网站的错误,网站错误排查与修复

网站错误可能由多种原因引起,以下是一些常见的排查和修复步骤:查看错误日志:在服务器上查看错误日志文件,通常位于 logs 文件夹中。 分析日志中的错误信息,确定问题原因。浏览器开发者工具:使用浏览器的开发者工具(F12),查看控制台中的错误信息。 检查网络请求,查看是…

如何在PbootCMS中增加对WebP和MOV文件类型的上传支持?

在PbootCMS中,默认情况下支持的上传文件类型可能不包括WebP和MOV。为了允许上传这些文件类型,你需要修改PbootCMS的配置文件和Ueditor编辑器的配置文件。以下是详细的步骤和说明: 1. 修改PbootCMS的配置文件 PbootCMS的上传配置位于 /config/config.php 文件中。你需要在这个…

易优CMS中的adv标签如何使用?

在易优CMS中,adv标签主要用于获取广告列表内容。这个标签非常灵活,可以通过设置不同的属性来控制广告的展示方式。基本的用法如下:html{eyou:adv pid=1 loop=3}<a href="{$field.links}"><img alt="{$field.title}" src="{$field.litpic}…