Linux_连接和登录-一些细节

Unix 连接

主机-host --服务器
终端 terminal (输入设备和输出设备)  --客户端 使用服务端的程序
     终端设备名称,如 tty*、ttyS* 、ttyAMA* 和 console  它通常是一个物理终端设备,直接连接到系统的硬件
	    控制台终端(console):对应到/dev/console 文件;
        控制终端(controlling terminal)  应到 /dev/tty文件   tty 的全称是TeleTYpe,原来指的是电传打字机
		虚拟控制台终端:仿真了类型为Linux的一种终端(TERM=Linux) /dev/tty0 会指向当前所使用虚拟终端
		      特定的组合键(如 Ctrl+Alt+F1、Ctrl+Alt+F2 等)来切换到这些终端
			    #1-6全屏,基于文本终端,#7为图形终端
		伪终端(pseudo terminal):通常是通过ssh登陆的终端,对应到/dev/pts/*文件
		串行端口终端(serial port terminal):
termcap   curses  terminfo
界面 CLI TUI  GUI X-Window 

命令执行过程

  终端--输入命令--命令解析	--执行-返回结果
  Termcap(terminal capabilities   --》 Terminfo(terminal information
  curses(cursor addressing)-- ncurses(new curses)
     将所有不同类型终端的描述收集到一个数据库中,当程序希望向终端发送命令时,它可以通过使用数据库中的信息以一种标准化的方式完成
    系统刚刚启动的时候,boot会给OS传递参数,其中有一个TERM=linux的,就是说起来以后终端就用Linux终端
   Terminfo 是由Thomas E. Dickey开发的,它是ncurses库的一部分 /usr/share/terminfo
        是一个库和数据库,用于描述终端的能力,如颜色、光标移动和其他特殊字符

使用xshell连接远程linux

 1、使用xshell连接远程linux服务器时,Xshell充当远程终端会话的客户端
 
 2、连接成功后,系统会为这次远程会话创建一个伪终端,伪终端由master和slve组成。
    maste 主设备负责与Xshell通信(处理Xshell发送的输入并将程序的输出传回给Xshell);
	slve 从设备(例如/dev/pts/0)则为这次远程会话提供虚拟终端环境。
 
 3、在xshell输入命令时候,会先发送给主设备,
 主设备再发送给从设备。 从设备中命令会被执行,从而返回给主设备。
 主设备再传递回Xshell,从而就能在Xshell窗口中看到结果

Linux 创建进程

  父进程/双亲、子进程/孩子、继承
exec 系列函数则用于在当前进程中执行新程序,替换其地址空间
       exec就是把老的shell给干掉,然后去干活
	   
fork 函数用于创建一个新进程,该进程是调用进程的副本(子进程)。
     子进程会继承父进程的资源,但拥有独立的地址空间和堆栈。分叉
 
 posix后面的标准接口posix_spawn;BSD的vfork;Windows的CreateProcess
#include <pthread.h> 
   pthread_create并不是linux的系统调用函数,而是由 glibc实现的符合posix接口规范的线程库函数。
    pthread 的底层也是基于 copy_process 实现的

SHELL

变量类型 
    局部变量和全局变量	  shell变量和环境变量
	   环境变量通过setenv创建,shell变量由set命令创建
交互式shell 和 非交互式shell        登录shell   和 非登录shell 
    登录shell执行登录文件和环境文件 登录shell:.profile,然后$ENV
      输入shell的名称启动一个新shell,新shell是一个非登录shell  非登录shell只执行环境文件 非登录shell:$ENV
内部命令和外部命令  type  file 
  
bash a.sh | source a.sh | . a.sh |exec a.sh  |  ./a.shell

1.bash/sh 执行脚本
     两种方法          bash xxx.sh,
	  另外一种就是bash -c “cmd string”
	Bash可以以两种模式运行,默认模式(追求灵活性)和POSIX模式(追求兼容性)  
	
2.source 命令是 bash shell 的内置命令,从 C Shell 而来。 
    source 命令的另一种写法是点符号,
	用法和 source 相同  source 命令会强制执行脚本中的全部命令,而忽略文件的权限
        source: not found   shell 的解释器不是 bash,需把 shell 的解释器更改为 bash
     source命令用于在当前shell环境中执行指定的脚本,而不是在一个新的shell中
	 bin/sh: 1: source: not found 错误
	    bash -c "source setup.bash && python3 test.py " 

3.   ./a.sh 打开一个subshell去读取、执行a.sh,
      但a.sh需要有"执行权限",可以用chmod +x添加执行权限. 和bash

4. exec命令也可实现在原进程中执行,但是同时会终止原进程,所以我在命令行中执行 
    exec /opt/ros/../setup.sh 链接的ssh都断开了

history  输入ctrl+R后,开始准备查找命令

Docker

docker build 
docker run  启动容器时传递环境变量到容器中	   
docker 	 exec 进程的环境变量其实是继承自宿主机的?  
posted @ 2025-02-28 18:01  辰令  阅读(33)  评论(0)    收藏  举报