当前位置: 首页 > news >正文

网站开发 项目的招标文件内蒙古创意星空网站开发

网站开发 项目的招标文件,内蒙古创意星空网站开发,猪八戒做网站,网站怎样做多语言切换Bash Shell Shell是位于用户与操作系统内核之间的桥梁#xff0c;当用户在终端敲入命令后#xff0c;这些输入首先会进入内核中的tty子系统#xff0c;TTY子系统负责捕获并处理终端的输入输出流#xff0c;确保数据正确无误的在终端和系统内核之中。Shell在此过程不仅仅是…Bash Shell Shell是位于用户与操作系统内核之间的桥梁当用户在终端敲入命令后这些输入首先会进入内核中的tty子系统TTY子系统负责捕获并处理终端的输入输出流确保数据正确无误的在终端和系统内核之中。Shell在此过程不仅仅是一个监听者还会积极地从tty子系统读取用户的命令输入并对其进行解析来识别用户意图(比如当你输入ls时是Shell解析这个命令并调用/bin/ls文件的来直接解析)。Bash Shell基础 shell是 Linux/Unix 系统中用户与操作系统内核交互的基本命令行界面它是系统启动后为用户提供的默认命令解释器环境。 Bash和Shell其实是包含关系。Shell是命令行解释器的统称 有Bash、Zsh、Fish、Dash等多种命令行解释器Bash是Shell的最流行方式Ubuntu系统默认使用的也是Bash当然你可以通过在终端中输入特定命令行可以切换(一般这几种命令行解释器的命令是兼容的但是存在一些语法和交互功能的差异)一般使用Bash就足够了。 Bash Shell与终端不同点Bash Shell是命令行解释器程序终端则是输入输出设备/界面。可以理解为终端是显示器键盘而Bash是运行在这个显示器上的智能程序。一般的执行流程是-------你在终端输入命令 → 终端将输入传给Shell → Shell解释执行 → 结果返回终端显示 交互式Shell与非交互式Shell  简单来说交互式Shell用户可以 直接输入命令 并 实时看到输出 的 Shell会显示 PS1 提示符如 userhost:~$等待用户输入。比较常见的场景1直接打开终端 2通过 SSH 登录后手动操作如 ssh user192.168.1.1 后进入 Shell3手动运行 bash -i强制交互模式 非交互式Shell不等待用户输入直接执行 单条命令 后退出所以说一般是看不到的不会显示 PS1 提示符执行完命令后立即关闭。比较常见的场景1通过 ssh userhost command 远程执行命令。2使用 Python paramiko.exec_command(command)。3运行 Shell 脚本如 bash script.sh如果输入bash -i script.sh会强制交互式 登录式Shell和非登录式Shell 登录式 Shell 的关键特征是 以用户身份初始化完整的登录会话加载登录配置文件如 ~/.bash_profile。 通常出现在系统首次登录时如 SSH 登录、本地终端登录、su - username。 .sh脚本文件 我们平常为了方便而写的脚本文件实际上就是一个纯文本文件包含一系列 Shell 命令如 Bash、Zsh 等支持的语法将需要手动逐条输入的命令预先整体写入文件实现 自动化执行。比如以下脚本文件(文件名demo.sh)Shell解析器就会一行一行的解析每一行(即每一条)内容。 #!/bin/bash echo Hello World ls -l date 执行的.sh文件的方式有以下几种 bash demo.sh显式指定解释器(bash)启动一个新的子 Shell 进程来执行脚本。直接调用 /bin/bash 程序将 demo.sh 作为参数传递给它忽略 Shebang 行(即首行的#!/bin/bash)。./demo.sh:依赖脚本首行的 Shebang如 #!/bin/bash。与bash的区别还有重要的一点就是bash demo.sh不需要赋予文件执行权限而./demo.sh必须赋予文件执行权限source demo.sh也可以简写为. demo.sh:不启动子Shell直接在当前 Shell 进程中逐行执行脚本并且会忽视Shebang。脚本中定义的变量、函数、别名等会影响当前 Shell。而前两种执行方式脚本中定义的变量、函数不会影响当前 Shell 环境。一般用于加载环境配置比如 # 加载环境配置如 ~/.bashrc source ~/.bashrc# 脚本中修改当前 Shell 的工作目录 source change_dir.sh # 脚本内容: cd /some/path 在交互式Shell和非交互式Shell说到过bash  运行Shell脚本时会启动一个非交互式Shell也就是启动一个新的子Shell来运行这个脚本并且这个子Shell进程是非交互式的Shell执行完毕后控制权返回给父 Shell。而source不会启动子Shell所以说它会在当前的交互式Shell运行。 .bashrc文件 .bashrc 文件是 Linux 系统中非常重要的配置文件它与是否安装 ROS 无关是 Bash shell的标准配置文件(它是一个纯文本文件使用 Bash 语法 编写)rc 通常代表 run commands (运行命令)。文件名中的点(.)表示它是隐藏文件在Linux系统用户主目录下按ctrlh键可以显示隐藏文件。 .bashrc的内容语法(完全遵循Bash语法) export PATH$PATH:/my/custom/path 变量定义。用来设置环境变量影响所有子进程alias llls -alF 起别名在终端输入ll就相当于输入ls -alFgreet() { echo Hello, $USER!; } 函数定义if [ -d ~/projects ]; then   echo Projects directory exists fi   条件循环判断 .bashrc如何运行 当启动非登录的交互式 Bash shell 时打开新的终端时通过bash命令启动新的Shell时.bashrc文件都会自动启动 必须需要注意的是在非交互式Shell中默认不会自动加载.bashrc也就是说你在使用bash执行脚本时在新打开的Shell子进程中不会加载.bashrc也就不会启动对应的环境(但是子进程会继承父进程的环境变量)。在交互式Shell中默认会加载.bashrc(因为 ~/.bash_profile 或 ~/.profile 通常会显式调用 .bashrc)。登录式Shell会加载 ~/.bash_profile 或 ~/.profile~/.bash_profile 或 ~/.profile 通常会显式调用 .bashrc所以.bashrc也会自动调用。非登录式Shell不会加载配置文件。 其实在非交互式Shell不会自动加载.bashrc这是因为.bashrc的开头有以下代码。这表示仅当Shell是交互式时才继续执行后续内容。非交互式Shell会直接return退出也就是说即使你在非交互式Shell单独调用source ~/.bashrc也不会加载.bashrc的配置内容。这是为了避免用户自定义配置影响自动化任务而设置的为了安全起见也不要试图去修改它 case $- in*i*) ;;*) return;; esac 除此之外还有.bash_profile和.profile文件。.bashrc在非登录的交互式Bash Shell(不需要重新认证的子会话如图形终端新建窗口、bash 命令启动等直接继承父 Shell 的环境变量)自动加载.bash_profile在Bash登录Shell(需要用户认证的完整会话,如系统登录、SSH 连接等全新环境会重新读取配置)自动加载也就是说.bash_profile登录时一次性设置。.profile是在所有Shell的登录会话都会加载但是前提是.bash_profile不存在。也就是说只有在用户使用Bash并且存在./bash_profile时才会跳过.profile的加载如果用户使用其他命令解释器则会自动加载.profile所以说.profile是跨 Shell 的通用环境变量。 1网络配置 确保所有设备(PC端嵌入式端等等)连接在同一个局域网下在每台设备的终端输入ifconfig查看IP地址由于不同网络下IP地址经常改变所有推荐将每台设备设置为静态IP地址。 使用ping命令测试各PC之间的连通性如果都能ping通后就可以开始下一步了 2环境变量配置 在所有PC上编辑~/.bashrc文件添加以下环境变量 export ROS_MASTER_URIhttp://master_ip:11311 # 主机的IP地址。ROS 默认使用 11311 端口 作为 roscore 的通信端口这是由 ROS 的设计者设定的标准配置。 export ROS_IPlocal_ip # 本机的IP地址 export ROS_HOSTNAMElocal_ip # 本机的IP地址 然后执行 source ~/.bashrc 3主机名解析 主机名解析就是将上面的ROS_MASTER_URIhttp://master_ip:11311中的master_ip用一个名字来代替比如master-pc192.168.1.1这时只需要将192.168.1.1替换为master-pc即可类似于变量赋值。当然你也可以直接输入为192.168.1.1而不需要主机解析但是这样的话如果主机的ip地址频繁变换就需要在每个从机的./bashrc中重新修改主机的ip地址从机数量少的话还可以从机数量多的话就会很麻烦。 主机名解析的实现方式一般有以下几种 1使用/etc/hosts文件 首先在所有参与ROS通信的计算机上编辑/etc/hosts文件添加所有ROS计算机的IP和主机名映射格式如下 192.168.1.100 master-pc 192.168.1.101 slave1-pc 192.168.1.102 slave2-pc 保存文件后测试解析 ping master-pc ping slave1-pc 但是这种方式看起来是使用了主机解析但它只是增强了可读性而没有解决频繁手动修改IP的缺点如果 Master 的 IP 地址变了还是需要手动修改所有从机的/etc/hosts文件的配置 2使用DNS DNS一般是用于学校或者企业适用于本地有DNS服务器或路由器支持DNS绑定的场景 在路由器或 DNS 服务器上将主机名如 master-pc绑定到 Master 的 IP。所有从机自动通过 DNS 解析 master-pc无需手动改 IP。这样IP地址变动时只需改DNS记录所有从机自动生效 3使用mDNS: 适用于小型网络如实验室或者家用 确保所有机器安装 avahi-daemonLinux 默认通常已安装 sudo apt install avahi-daemon # Ubuntu/Debian 直接使用 .local 主机名无需配置 /etc/hosts export ROS_MASTER_URIhttp://master-pc.local:11311 4使用静态DHCP绑定 适用于家用/实验室路由器支持DHCP静态绑定的场景 在路由器后台将 Master 的 MAC 地址绑定到一个固定 IP如 192.168.1.100。所有从机直接用这个 IP因为 Master 的 IP 永远不会变。 4防火墙配置 UFWUncomplicated Firewall是一款基于 iptables 的简单易用的防火墙配置工具广泛应用于基于 Debian 和 Ubuntu 的 Linux 系统中用于管理和配置网络防火墙规则。UFW 支持允许或拒绝特定的网络连接。即使系统中没有安装 UFW也不意味着没有防火墙阻拦网络连接。UFW 只是一个简化的防火墙管理工具而在 Linux 系统中底层的防火墙功能通常由 iptables 或 nftables 实现(iptables 是 Linux 系统中强大的防火墙配置工具但它的命令复杂规则编写难度较大对普通用户不太友好。UFW 则提供了一种简化的接口使用户可以用更直观、简洁的命令来管理防火墙规则,比如启用防火墙只需执行sudo ufw enable而使用 iptables 则需要编写多条复杂的命令)。 先使用命令查看防火墙配置工具ufw是否安装 dpkg -l | grep ufw 如果 ufw 已经安装会显示相关的软件包信息如果没有任何输出说明 ufw 未安装。此时需要输入命令进行安装 sudo apt update sudo apt install ufw 安装后查看防火墙活跃状态 sudo ufw status 如果输出Status: inactive表示防火墙处于未启用状态网络端口处于相对开放状态外界可以直接访问系统暴露的端口。 如果防火墙处于活跃状态则需要确保所有PC的防火墙允许ROS通信默认端口11311 sudo ufw allow 11311/tcp 就能允许外部设备通过 22 端口通常用于 SSH 服务访问本地系统  5测试连接 在主PC上启动ROS Master roscore在其他PC上测试连接 rostopic list 如果连接成功会显示 Master 上已发布的 Topic 列表。如果 Master 刚启动 roscore默认只有 /rosout 和 /rosout_agg $ rostopic list /rosout /rosout_agg 6同步时间 需要时可以选用此功能 在ROS多机通信中时间同步Time Synchronization是一个关键但容易被忽视的配置。指的是让所有参与ROS通信的计算机保持高度一致的系统时间最好误差在毫秒级。 通常使用NTP来实现时间同步 NTP是一种网络协议用于同步计算机的系统时间计算机通过NTP客户端从时间服务器如ntp.ubuntu.com获取精确时间局域网内通常可达毫秒级同步 基本原理 NTPNetwork Time Protocol实现时间同步的原理是一个分层、多源校正的精密时间同步体系其核心设计目标是在不可靠的网络环境中实现高精度的时间同步局域网内通常可达毫秒级理想条件下可达亚毫秒级。 NTP采用层级化的时间源结构类似于金字塔 Stratum 0 最顶层直接连接原子钟、GPS或铯钟等高精度物理时钟设备不直接参与网络通信。 示例实验室原子钟、卫星时间信号。 Stratum 1 直接与Stratum 0设备同步的NTP服务器时间误差通常100μs。 示例国家授时中心服务器、Google的time.google.com。 Stratum 2 从Stratum 1同步的服务器误差逐层递增每层增加约1ms。 示例企业级NTP服务器、公共NTP池如pool.ntp.org。 Stratum 3及以下 更低层级的同步节点适用于普通客户端设备。 NTP通过以下四个时间戳计算时间偏差Clock Offset和网络延迟Round-Trip Delay 假设客户端A与服务器B交互 T₁客户端发送请求时的本地时间A的时钟。 T₂服务器收到请求时的本地时间B的时钟。 T₃服务器回复响应时的本地时间B的时钟。 T₄客户端收到响应时的本地时间A的时钟。 最终时间偏差是多次测量的统计结果通常采用最小二乘法或Marzullo算法过滤异常值。 中国的NTP服务架构是分层级的国家授时中心是stratum1其他运营商比如阿里云腾讯云等部署了多台次级服务器。所以你执行命令时会使自己的PC端自动连接到附近最优的服务器由于所有的NTP服务器本身已经同步(都溯源到国家授时中心或GPS/原子钟) 所以连接了NTP的各个服务器就可以实现同步。 比如下面的方式一就是将其连接到了最优的服务器但是如果你需要更高的精度还可以指定同一NTP服务器这时就需要在文件/etc/systemd/timesyncd.conf添加如下内容指定特定服务器(比如阿里云) [Time] NTPntp.aliyun.com 实现方式(Ubuntu系统) 方法一使用系统默认的timesyncd使用简单 如果使用 systemd-timesyncd即 timedatectl 管理的 NTP 客户端通常不需要额外安装 ntp 或 ntpdate因为 timesyncd 已经是一个轻量级的 NTP 客户端默认集成在 systemd 中。 # 检查当前同步状态 timedatectl status# 如果未启用NTP运行 sudo timedatectl set-ntp on# 手动强制同步 sudo systemctl restart systemd-timesyncd 方法二安装完成的ntp包(更精确控制) sudo apt install ntp sudo systemctl restart ntp # 启动或重启 NTP 服务立即应用配置并开始同步。# 查看同步状态 ntpq -p ntpq -p输出示例如下 remote refid st t when poll reach delay offset jitter*ntp.ubuntu.com .POOL. 16 u 25 64 1 5.123 -0.432 0.871 time.google.com .GOOG. 1 u 12 64 7 1.234 0.567 0.123 * 表示当前主同步源。 offset本地时钟与服务器的偏差单位毫秒。 jitter网络延迟的波动程度。 验证时间同步 ntpdate -q 192.168.1.100 # 查询与某台机器的时间差 7共享ROS包 此功能如果需要可以选用不做详细解释 方法1同步工作空间 使用rsync或git同步工作空间 确保所有PC上的包路径相同 方法2NFS共享 设置NFS服务器共享工作空间 其他PC挂载该共享目录 方法3独立编译 在各PC上独立维护代码库 确保版本一致 8启动管理 可以使用roslaunch在多台机器上启动节点 launchmachine namepc1 address192.168.1.101 useruser passwordpass env-loader/opt/ros/noetic/env.sh/machine namepc2 address192.168.1.102 useruser passwordpass env-loader/opt/ros/noetic/env.sh/node machinepc1 namenode1 pkgyour_pkg typenode1/node machinepc2 namenode2 pkgyour_pkg typenode2/ /launch
http://www.zqtcl.cn/news/572203/

相关文章:

  • 社区网站开发search搜索引擎
  • 章丘做网站哪家强原阳网站建设
  • 做网站前期构架图中国建设银行手机银行网站
  • tp5企业网站开发百度云青岛vi设计公司
  • 网站建设实验原理建站之星 discuz
  • 购物网站如何备案建设部施工合同范本
  • 网站模板安装建站之星凡客
  • 有没有电脑做兼职的网站吗网站和域名区别
  • 免费html网页模板素材网站修改wordpress后台登陆
  • 男女做啊免费视频网站网站做全景图
  • 网站域名 安全网站开发语言一般是用什么
  • 麦包包的网站建设分析网站开发一般要用到哪些软件有哪些
  • 关于内网站建设的请示天津住房与城乡建设厅网站首页
  • 企业网站免费源码装修公司需要多少钱
  • 沈阳建设网站费用群晖wordpress打不开
  • jsp网站开发 pdf建设植绒衣架网站
  • 做网站接单的网站做外贸网站价位
  • 金融商城快捷申请网站模板下载汕头网站建设和运营
  • 网站建设网站备案所需资料请兼职做企业网站设计怎么收费
  • 电脑配件经营网站的建设论文邯郸市环保局网站建设项目环境
  • 那些网站可以做反链免费游戏不用登录直接玩
  • 安徽网站建设的基本步骤接外贸订单的平台
  • 那些网站可以找得到做货代的广东企业微信网站开发
  • 海宁市建设局官方网站6哔哩哔哩网页版官网在线观看
  • 泉州网站建设轩奇网讯韩国美容网站模板
  • 培训好吗网站建设wordpress手游
  • 元典科技网站建设网页设计制作图片页面
  • 网站设置什么意思无代码搭建平台
  • 织梦做的网站后台登录做网站购买域名
  • 哈尔滨网站关键词优化排名合江做网站