• [问题求助] 海思开发板Hi3519D做profiling时,ssh连接时遇到的ssh-keygen问题
    问题描述:准备在海思开发板Hi3519D做profiling采集,msprof.py显示需要与开发板进行SSH连接,然后在服务器侧交叉编译openSSH服务,并在板端部署openSSH,但在板端使用ssh-keygen生成秘钥对的过程中,遇到ssh-keygen not found的问题,下面详细的将每一步过程贴出来,希望能得到解答和帮助。1.服务器侧交叉编译openSSH服务根据说明文档,准备三个安装包第一步:交叉编译环境准备aarch64-v01c01-linux-musl-g++可用,没有重新安装第二步:编译zlib,openssl,opensshtar -zxvf zlib-1.2.11.tar.gzcd zlib-1.2.11/CC=aarch64-v01c01-linux-musl-gcc ./configure --prefix=/usr/local/ssh_install/zlibmake -jmake installtar xf openssl-1.1.1g.tar.gzcd openssl-1.1.1g./config no-asm shared --cross-compile-prefix=aarch64-v01c01-linux-musl- --prefix=/usr/local/ssh_install/openssl将生成的Makeffle中的所有"-m64"修改为"-mabi=lp64"make -jmake install​tar xf openssh-8.0p1.tar.gzcd openssh-8.0p1./configure --host=aarch64-linux --with-libs --with-zlib=/usr/local/ssh_install/zlib --with-ssl-dir=/usr/local/ssh_install/openssl CC=aarch64-v01c01-linux-musl-gcc AR=aarch64-v01c01-linux-musl-ar --prefix=/usr/local/ssh_install/openssh --exec-prefix=/usr/local/ssh_install/openssh --disable-etc-default-login --disable-stripmake -jmake installmake install 发生报错,但是根据说明文档提示忽略再次执行make install因此该步骤结束,查看安装结果说明文档的tree如下,2.板端部署 OpenSSH 服务根据说明文档,是通过服务器使用mount命令将NFS服务器上的目录挂载到板端环境的指定目录,但是linux服务器跟开发板不在一块,所以通过linux服务器将文件传输到Windows下,然后在Windows下通过telnet和mount挂载按照步骤1,步骤2,步骤3,已经将文件放在windows的挂载路径下挂载的文件目录为挂载指令为:mount -t nfs ip:/cameral /home -o nolock板端上已经出现挂载目录问题出在说明文档中是将服务器侧挂载到tmp,然后将文件cp到usr下面,但是我(root)没有权限cp到usr中,报错指出usr只读权限,只有1012所有者和1013所属组有权限,我(root)其他用户只可以读​​然后,为了不cp进去也可以调用ssh-keygen,因此采用export的形式添加到路径中然后,cd到/home/bin下,执行ssh-keygen出现报错,找不到,与说明文档的区别就是没有办法将文件cp到usr中,但是通过export的方式绕过,不知道哪里出现了问题,希望能得到各位大佬帮助
  • [技术干货] SSH生成SSH密钥(公钥和私钥)-转载
    在设置SSH服务时,生成SSH密钥(公钥和私钥)是一个常见的任务。这些密钥用于安全地进行身份验证,无需输入密码。以下是如何生成SSH密钥的步骤:  1. 生成SSH密钥对 首先,您需要在客户端机器上生成一个SSH密钥对。使用ssh-keygen命令来生成密钥对。  ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 1 -t rsa:指定密钥类型为RSA。 -b 4096:指定密钥长度为4096位。 -C “your_email@example.com”:添加注释(通常是您的电子邮件地址),这有助于识别密钥。 执行上述命令后,系统会提示您输入文件名以保存密钥(默认情况下保存在~/.ssh/id_rsa中),以及是否设置密码短语。设置密码短语可以增加额外的安全层,但也可以留空以便免密码连接。  2. 查看生成的密钥文件 生成密钥对后,您的SSH目录(通常是~/.ssh)中将包含以下两个文件:  id_rsa:私钥文件。 id_rsa.pub:公钥文件。  3. 将公钥复制到远程服务器 要使用SSH密钥登录到远程服务器,需要将生成的公钥添加到远程服务器上的~/.ssh/authorized_keys文件中。可以使用ssh-copy-id命令来完成此操作:  ssh-copy-id user@remote_host 1 user:远程服务器上的用户名。 remote_host:远程服务器的IP地址或域名。 此命令会提示您输入远程服务器用户的密码,并将公钥自动复制到远程服务器的~/.ssh/authorized_keys文件中。  4. 手动复制公钥 (可选) 如果无法使用ssh-copy-id,也可以手动复制公钥。首先查看公钥内容:  cat ~/.ssh/id_rsa.pub 1 然后,将输出的内容复制并粘贴到远程服务器上的~/.ssh/authorized_keys文件中。确保文件权限正确:  在远程服务器上执行 mkdir -p ~/.ssh chmod 700 ~/.ssh echo "your_public_key" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 1 2 3 4 5. 测试SSH连接 完成上述步骤后,您应该能够使用SSH密钥进行无密码登录:  ssh user@remote_host 1 如果一切正常,您将直接登录到远程服务器,而不需要输入密码。  6. 配置SSH客户端(可选) 为了更方便地管理多个SSH连接,可以在本地机器的~/.ssh/config文件中配置SSH客户端:  Host remote_host_alias     HostName remote_host     User user     IdentityFile ~/.ssh/id_rsa 1 2 3 4 这样,您可以通过别名进行连接:  ssh remote_host_alias 1 通过以上步骤,您可以生成SSH密钥并配置SSH服务,以便实现更加安全和便捷的无密码登录。 ————————————————                              版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                          原文链接:https://blog.csdn.net/qq_43420088/article/details/139775270 
  • [技术干货] Introduction to Downloading and Using MobaXterm, a Camera Background Login Tool
    Note: The tool download link is as follows:link: https://pan.baidu.com/s/1HrkwqZX5InJl_EDPjqCXKw  Extraction code: Abc51. ForewordCurrently, the SSH protocol is used to log in to the background of a Huawei camera. When you log in to the background for the first time (or after the default settings are restored), you need to enter the default user name admin and password ChangeMe123. After that, the system prompts you to change the password. Generally, the new password is changed to HuaWei123. Of course, you can also change the password to other passwords that meet the strength requirements. In fact, there are many tools for logging in to the camera background, such as SecureCRT and Xshell. Theoretically, these tools can also be used for logging in to the camera background. However, the configuration in some places is slightly different. Sometimes, SFTP needs to be configured for uploading files to the background. Some tools may fail to be configured or configured but do not take effect, affecting user experience. Here I recommend using MobaXterm to log in to the camera background, and the configuration is simple.2. Log in to the background.A. Before logging in to the background, you need to enable SSH and SFTP on the camera. After SSH and SFTP are enabled, you can log in to the background. After SSH and SFTP are enabled, you can upload and download files to the camera. The following figure shows the opening position.B. Start MobaXterm, choose Session > SSH, and enter the user name and password. Note that the user name is admin instead of root. You need to manually switch to root after login.C. Log in to the camera as the admin user, run the su command, and enter the password to switch to the root user. If no operation is performed for a period of time, the root user exits and becomes the admin user.3. Upload files.A. To upload files, enable SFTP on the camera and then enable MobaXterm. The port number is 20022.2. After the file is opened, drag the file to the tool. Note that the default size limit is 5 MB. If the file size exceeds 5 MB, run the command to remove the limit. For details about the command, see the FAQ. The default upload path is /home/sftp_admin/home/admin/.3. When exporting a file from the camera, you need to upload it to this directory. Assign the permission chmod 777 + file name and drag it out. If the permission is chmod a+x, the file cannot be downloaded.
  • [技术干货] Samba案例笔记分享(下)
    案例三、实现不同的用户访问同一个共享目录具有不同的权限,便于管理和维护。基本上能满足一些企业用户的需求。(整理自网络)a. 需求1. 某公司有5个大部门,分别为:人事行政部(HR & Admin Dept)、财务部(Financial Management Dept)、技术支持部(Technical Support Dept)、项目部(Project Dept)、客服部(Customer Service Dept)。2. 各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中。3. 每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号。4. 公用文件夹中分为存放工具的文件夹和存放各部门共享文件的文件夹。5. 对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。不是本部门用户不能访问本部门文件夹。6. 对于公用文件夹中的各部门共享文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建。对于存放工具的文件夹,只有管理员有权限,其他用户只能访问。b. 规划根据公司需求情况,现做出如下规划:1. 在系统分区时单独分一个Company的区,在该区下有以下几个文件夹:HR、 FM、TS、PRO、CS和Share。在Share下又有以下几个文件夹:HR、FM、TS、PRO、CS和Tools。2. 各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。3. HR管理员账号:hradmin;普通用户账号:hruser。FM管理员账号:fmadmin;普通用户账号:fmuser。TS管理员账号:tsadmin;普通用户账号:tsuser。PRO管理员账号:proadmin;普通用户账号:prouser。CS管理员账号:csadmin;普通用户账号:csuser。Tools管理员账号:admin。文件夹之间的关系见下图:c. 新建用户使用useradd命令新建系统账户,然后再使用smbpasswd –a建立SMB账户。[root@TS-DEV ~]# useradd -s /sbin/nologin hradmin[root@TS-DEV ~]# useradd -g hradmin -s /sbin/nologin hruser[root@TS-DEV ~]# useradd -s /sbin/nologin fmadmin[root@TS-DEV ~]# useradd -g fmadmin -s /sbin/nologin fmuser[root@TS-DEV ~]# useradd -s /sbin/nologin tsadmin[root@TS-DEV ~]# useradd -g tsadmin -s /sbin/nologin tsuser[root@TS-DEV ~]# useradd -s /sbin/nologin proadmin[root@TS-DEV ~]# useradd -g proadmin -s /sbin/nologin prouser[root@TS-DEV ~]# useradd -s /sbin/nologin csadmin[root@TS-DEV ~]# useradd -g csadmin -s /sbin/nologin csuser[root@TS-DEV ~]# useradd -s /sbin/nologin admin[root@TS-DEV ~]#[root@TS-DEV ~]# smbpasswd -a hradminNew SMB password:Retype new SMB password:Added user fmuser.[root@TS-DEV ~]# smbpasswd -a hruser[root@TS-DEV ~]# smbpasswd -a fmadmin[root@TS-DEV ~]# smbpasswd -a fmuser[root@TS-DEV ~]# smbpasswd -a tsadmin[root@TS-DEV ~]# smbpasswd -a tsuser[root@TS-DEV ~]# smbpasswd -a proadmin[root@TS-DEV ~]# smbpasswd -a prouser[root@TS-DEV ~]# smbpasswd -a csadmin[root@TS-DEV ~]# smbpasswd -a csuser[root@TS-DEV ~]# smbpasswd -a admin[root@TS-DEV ~]#d. 新建目录e. 更改目录属性[root@TS-DEV Company]# chown hradmin.hradmin HR[root@TS-DEV Company]# chown fmadmin.fmadmin FM[root@TS-DEV Company]# chown tsadmin.tsadmin TS[root@TS-DEV Company]# chown proadmin.proadmin PRO[root@TS-DEV Company]# chown csadmin.csadmin CS[root@TS-DEV Company]# chown admin.admin Share[root@TS-DEV Company]# cd Share/[root@TS-DEV Share]# chown hradmin.hradmin HR && chown fmadmin.fmadmin FM && chown tsadmin.tsadmin TS && chown proadmin.proadmin PRO && chown csadmin.csadmin CS && chown admin.admin Tools[root@TS-DEV Share]# chmod 1775 HR FM TS PRO CSf. 配置samba如下:g. 测试重启smb服务。如果提示,“不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次”解决:https://www.cnblogs.com/wuyou/p/3354455.htmlnet use * /del /y以 hradmin登录系统试图访问ts部门文件夹,要求输入用户名及密码试图在\\10.0.0.163\Share\TS下新建文件在自己部门所属文件夹下新建成功其他测试自行完成。配置完毕。五、将共享目录映射成Windows的驱动器将Samba共享的public目录,映射成 Windows 的一个驱动器盘符:a. 右击“计算机”-->“映射网络驱动器”b. 在文件夹栏输入共享地址及路径,点击“完成”输入用户名和密码c. 映射完毕后,打开资源管理器可以看到映射的共享目录Tips:在windows下通过“\\ip地址”的方式访问其它文件资源时,一般第一次需要输入密码,以后就无需输入密码直接登陆了,那么如果我们要切换到其它Samba用户怎么办呢?可以在windows下执行如下指令实现:首先通过开始-->运行-->cmd 输入:“net use”命令查看现有的连接,然后执行“net use \\Samba服务器IP地址或者netbios名称\ipc$ /del”,删除Samba服务器已经建立的连接。或者执行“net use * /del”将现在所有的连接全部删除。最后,再次执行“\\ip地址”时,就可以切换用户了。六、Linux客户端访问操作上面介绍了windows客户端访问Samba服务器的操作,那么在Linux作为客户端时,查看其它Linux Samba服务器共享的文件时,应该如何操作呢?这就要用到smbclient这个工具,系统默认自带了这个命令,Smbclient常见用法介绍如下:1、查看Samba服务器的共享资料# smbclient –L //Samba服务器的ip地址 -U Samba用户名“-L”即为list的含义,“-U”是user的意思,如果Samba服务器是无密码访问的话,可以省略“-U Samba用户名”。例如:samba需要密码登陆时,查看共享方法如下:# smbclient -L //10.0.0.163/public –U davidSamba无密码访问时,执行如下命令:# smbclient -L //10.0.0.163/publicpassword: 直接回车即可。2、登陆Samba服务器如果需要在Linux客户端登陆Samba服务器,用法如下:# smbclient //Samba服务器的ip地址 -U Samba用户名请看下面执行的操作:# smbclient //10.0.0.163/public -U davidsmb: \> ? //在这里输入?即可查看在smb命令行可用的所有命令。操作过程与登陆FTP服务器很类似,登陆Samba服务器后,就可以进行文件的上传与下载,如果有足够的权限,还可以进行修改文件操作。此外,Samba服务器共享出来的文件还可以在Linux客户端进行挂载,这就要用到mount命令,如下所示:# mount -t cifs -l //10.0.0.163/public /mnt/samba/
  • Samba案例笔记分享(上)
    案例一:公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/share,共享名为public,此共享目录允许所有员工访问,只读操作。注意:1. 修改的是 /etc/samba/smb.conf 文件2. 修改文件之前最好将其备份,cp /etc/samba/smb.conf .a. 修改samba的主配置文件如下:b. 建立共享目录:上面设置了共享目录为/share,下面就需要建立/share目录:由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限。c. 重启smb服务:d. 测试smb.conf配置是否正确:e. 访问Samba服务器的共享文件:在Linux下访问Samba服务器的共享文件(需要安装Client端)在windows下访问Samba服务器的共享文件,浏览器输入 file://192.168.126.15/share或者运行栏输入: \\192.168.126.15可能出现的问题:解决:https://jingyan.baidu.com/article/3aed632ed3b4d2701080918e.html案例二、公司现有多个部门,因工作需要,将TS部的资料存放在samba服务器的/ts 目录中集中管理,以便TS人员浏览,并且该目录只允许TS部员工访问。a. 添加TS部组和用户建立用户的同时加入到相应的组中的方式:useradd -g 组名 用户名b. 在根目录下建立/ts 文件夹c. 将刚才建立的两个帐户添加到samba的账户中d. 修改主配置文件如下:e. 重新加载配置f. 到windows客户端验证,访问\\10.0.0.163,提示输入用户名和密码,在此输入sandy验证,如下图:g. 访问成功,可以看到公共的public目录,用户sandy的宿主目录,和其有权限访问的ts目录h. 进入ts目录,有刚才创建的newyork.city文件
  • [其他] 登录节点时报错 ssh: connnect to host xxx port 22: Connection timed out
    问题现象:从运维容器登录节点时登录报错 ssh: connnect to host xxx port 22: Connection timed out但是ping 内大网ip可以ping通问题分析:1.是否可以ping通:从运维容器ping内大网ip, 可以ping通2.curl 22,12017端口是否可以通:curl 100.79.89.245:12017 不通 curl 100.79.89.245:22 不通3.登录实例节点节点是否可以有对应端口的监听:lsof -i:22 ,lsof -i:12017  有监听4.查看节点防火墙状态:service iptables status ;systemctl status firewalld;   如果打开则关闭防火墙:    systemctl stop firewalld.service;    systemctl disable firewalld.service    service iptables stop5.登录运维容器所在的节点查看网络情况    kubectl get pod --all-namespaces -owide 登录10.17.13.41,1017.13.45两个节点执行:ssh -v 100.79.89.245 -p 22 ,可见网络不通EICommon-region-master01/02/03节点可以联通结论:三层网络,部分网络防火墙没有放通,需要网络将其他node节点的ip段也加入到配置中规避措施:需要网络将其他node节点的ip段也加入到防火墙配置中,具体操作联系网络的oncall
  • [开发环境] 【Codelab】【Codelab】请问下Codelab里打开的notebook,是否可能SSH接入
    如题。 Codelab目前是免费体验的,不知道是否可以支持VS code做SSH接入呢?
  • [设备专区] 配置SSH服务器指定的接口命令执行失败
    【操作步骤&问题现象】1、配置SSH接口信息失败。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [开发环境] 【ModelArts】【Notebook】VScode不能用SSH连接ModelArts Notebook
    【功能模块】ModelArts开发环境的Notebook【操作步骤&问题现象】1、创建Notebook并允许ssh远程连接2、VSCode用ModelArts插件SSH采用密钥进行远程连接,出错图13、VSCode采用RemoteSSH插件进行密钥远程连接,也出错图24、采用MobaXterm 使用相同的pem文件是可以连接成功请教一下VSCode的config文件该如何设置【截图信息】图1图2我的config设置如下Host ModelArtsNoteBook2    HostName dev-modelarts-cnnorth4.huaweicloud.com    Port 32219    User ma-user    ControlMaster auto    ControlPersist yes    IdentityFile C:\Users\xxxx\.ssh\KeyPair-996a.pem【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] ECS Ubuntu20.0 SSH 远程登陆报错
    使用securecrt 登陆 ECS Ubuntu20.0 提示:Key exchange failed. No compatible key exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256 这个问题的原因是,Ubuntu20.0 默认升级了SSH的鉴权算法,而老版本的securecrt不支持了。查了网上的资料:两个解决办法,1,升级securecrt到最新版本2.修改/etc/ssh/sshd_config文件添加KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1然后重启ssh守护进程sudo /etc/init.d/ssh restart再尝试远程,就可以了。
  • [经验分享] 使用MindStudio进行SiamMask模型推理
    使用MindStudio进行SiamMask模型推理1介绍本次实验需要MindStudio环境,我们先根据教程配置环境来安装MindStudio。MindStudio支持Python,Java和C语言的开发,提供了一站式AI开发环境,并提供了许多性能调优工具,应用开发中提供了插件化扩展机制,是一个高效、便捷的全流程开发工具链。2 安装教程MindStudio支持Windows和Linux两大平台。如图1所示,根据需要进行安装包的下载,具体安装流程参考官网。本图文教程,将基于Windows系统进行使用介绍。MindStudio软件包下载地址:https://www.hiascend.com/software/mindstudio/downloadWindows平台下载安装流程:https://support.huaweicloud.com/devg-mindstudio304/atlasms_02_0008.htmlLinux平台下载流程:https://www.hiascend.com/document/detail/zh/mindstudio/304/instg/atlasms_02_0018.html 图13推理实践3.1 ONNX简介ONNX 是一种根据机器学习所设计的开放式的文件格式,来存储已经训练好的模型。它使得不同的深度学习框架(如 Pytorch, MXNet)可以采用相同格式存储模型数据并进行交互。 3.2 ONNX推理分析这里我们要明确推理模型的输入输出,如表1所示:输入数据:输入数据大小数据类型数据排布格式mask   templatebatchsize x 3 x 127x 127RGB_FP32NCHWsearchbatchsize x 3 x 255x 255RGB_FP32NCHWrefine   p0batchsize x 64 x 61 x 61RGB_FP32NCHWP1batchsize x 256 x 31 x31RGB_FP32NCHWP2batchsize x 512x 15 x 15RGB_FP32NCHWP3batchsize x 256 x 1 x 1RGB_FP32NCHW输出数据:mask   score1 x 10 x 25 x 25FLOAT32NCHWdelta1 x 20 x 25 x 25FLOAT32NCHWmask1 x 3969 x 25 x 25FLOAT32NCHWf01 x 64 x 125 x 125FLOAT32NCHWf11 x 256 x 63 x 63FLOAT32NCHWf21 x 512 x 31 x 31FLOAT32NCHWcorr_feature1 x 256 x 25 x 25FLOAT32NCHWrefine   mask1 x 16129FLOAT32NCHW表13.3 ONNX推理工程创建一、SSH连接配置打开MindStudio,在菜单栏依次选择File > Settings... > Tools > SSH Configurations进入SSH连接配置,如图2所示。 图2参数及图标说明见表2。参数及图标说明Host连接目标地址(IP或域名)。Port连接目标地址的端口号。User name登录目标地址的用户名。Authentication type身份验证方式。有两种方式可选:PASSWORD:通过密码验证身份。KEY_PAIR:通过密钥验证身份,可以自行参考通用方式申请SSH密钥。说明:对于Euler2.8、2.10 aarch架构、银河麒麟 V10 SP1 aarch架构、OpenEuler、Ubuntu20.04和CentOS8.2,使用KEY_PAIR方式来通过密钥验证身份时,需要使用ssh-keygen -m PEM或者ssh-keygen -t rsa -m PEM命令来申请SSH密钥。申请SSH密钥时,建议设置Passphrase不为空,且符合以下口令复杂度:口令长度至少8个字符。口令必须包含如下至少两种字符的组合:至少一个小写字母至少一个大写字母至少一个数字至少一个特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/? 和空格当选择KEY_PAIR方式时,默认保存配置过的私钥文件。PasswordAuthentication type选择验证方式为Password时显示,需要填写对应用户名的密码,勾选Save password复选框可以保存密码。说明:如果没勾选save password。那么密码自动会在24小时后清除,届时再次使用到ssh会弹出密码输入框,需要再次输入密码方能执行ssh任务。Private key fileAuthentication type选择验证方式为KEY_PAIR时显示,选择本地私钥文件。PassphraseAuthentication type选择验证方式为KEY_PAIR时显示,需要填写对应密语。勾选Save password复选框可以保存密语。Test Connection单击该按钮测试连接是否成功。 新增SSH连接配置。  删除SSH连接配置,选中需要删除的SSH连接配置,单击该按钮删除。 OK保存SSH配置,单击OK按钮保存、应用SSH连接当前配置,并关闭配置界面。Cancel 取消当前配置,单击Cancel按钮不保存当前配置,并关闭配置界面。 Apply应用SSH配置,单击Apply按钮保存并应用SSH连接当前配置。Lock the current connection选项置灰,用户不可操作。如果SSH连接被添加到集群管理中,则该选项会自动勾选,SSH连接被锁定,不可修改和删除。表2 图3根据参数及图标说明配置参数后,单击“OK”或“Apply”,如图3所示。 二、添加远程服务器通过Deployment功能可以将指定的文件、文件夹同步到远程指定机器的指定目录。在菜单栏选择File > Settings…。在左边的导航栏选择“Tools > Deployment”,如图4所示。  图4配置映射路径关系。参数说明见表3。参数说明Local Path本地项目文件夹路径。单击对应文本框,将自动识别已打开的项目文件夹路径,也可通过在文本框中手动输入或单击文本框右侧文件夹图标进行配置。Deployment Path本地项目文件夹路径映射到远端服务器中的路径。可通过在文本框中手动输入或单击文本框右侧文件夹图标进行配置。表3 图5配置好Deployment,如上图5所示。单击“Apply”,Deployment配置生效。当在使用run/debug项目时,会触发Deployment同步功能。如果需要自动触发Deployment功能,可进行如下操作实现:在菜单栏选择File > Settings… 。在左边的导航栏选择“Tools > Deployment”进入Deployment界面,将指定远程服务器信息为默认远程服务器。2.在菜单栏选择“Tools > Deployment > Automatic Upload”。 导入工程文件首次登录MindStudio:单击“New Project”。非首次登录MindStudio:在顶部菜单栏中选择“File > New > Project...”。在“New Project”窗口中,选择“Python”,选择Python SDK所需版本软件包。如图6所示。 图6将要用到的包导入Mindstudio,操作过程如图7和图8所示: 图7 图8成功导入工程后,工程目录以树状呈现,以实际创建结果为准。 四、工程转换单击菜单栏 “Ascend > Convert To Ascend Project”。如图9所示: 图9弹出如图10所示窗口,转换昇腾工程配置: 图10Project Type选择Ascend App,Framework选择Ascend Python ACL App。单击“OK”,工程目录以树状呈现。此时成功创建带有.project文件的昇腾工程。 五、配置CANNCANN Manager为用户提供了在不重装MindStudio的前提下,切换以及更新Ascend-cann-toolkit开发套件包版本的功能。使用该功能之前,请确保已经完成MindStudio以及Ascend-cann-toolkit开发套件包的安装。CANN管理入口:在MindStudio工程界面菜单栏依次选择“File > Settings > Appearance&Behavior > System Settings > CANN”,弹出CANN Manager界面。或在MindStudio工程界面菜单栏依次选择“Ascend > CANN Manager”,弹出CANN Manager界面。 图11界面参数以及图标解释如表4所示。参数以及图标说明Remote ConnectionAscend-cann-toolkit开发套件包所在远程环境IP地址。Remote CANN locationAscend-cann-toolkit开发套件包的安装路径,默认为$HOME/Ascend/ascend-toolkit/{sotftware version}。Change CANN可以进行多版本Ascend-cann-toolkit开发套件包切换。 PackageCANN包名称。Component组件名称。VersionCANN版本号以及各软件包版本号。Host OS ArchHost侧操作系统以及架构。Activation安装的Ascend-cann-toolkit开发套件包以及软件包是否激活,若显示为Activated,则表示当前安装的CANN版本已经激活,CANN功能可用。StatusAscend-cann-toolkit开发套件包以及软件包的安装状态:Installed:Ascend-cann-toolkit开发套件包或软件包已经安装。Not Installed:Ascend-cann-toolkit开发套件包或软件包未安装。只有安装且已经激活的CANN才可用。表4配置好CANN,如上图11所示。单击“OK”,配置生效。3.4模型转换使用PyTorch 将模型权重文件.pth 转换为.onnx 文件。获取权重文件,使用ModelZoo的源码包中获取权重权重文件。执行如下代码进行pth文件到ONNX的转换。命令:python3.7 $workdir/SiamMask_pth2onnx.py -type 0 --resume $workdir/SiamMask_VOT.pth --output_dir $workdirpatch -p1 < $workdir/SiamMask.patchpython3.7 $workdir/SiamMask_pth2onnx.py -type 1 --output_dir $workdir得到静态ONNX模型后,使用 ATC 工具将.onnx 文件转换为.om 文件,导出.onnx模型文件时需设置算子版本为 11。昇腾张量编译器(Ascend Tensor Compiler,简称 ATC)是昇腾 CANN 架构体系下的模型转换工具,它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om 格式离线模型。模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。由于 Mindstudio 已经嵌入 ATC 工具,所以我将在 Mindstudio 上进行模型转换。在进行模型转换前,使用MindStudio安装用户,将所转换模型的模型文件以及权重文件上传到 Ascend-cann-toolkit 开发套件包所在的开发环境。选择run->Edit Configurations,如图12所示。 图12输入可执行的命令,如图13所示,所运行文件将会自动上传到服务器并运行命令。 图13然后使用“Ascend->Model Converter”将模型进行转换,如图14所示。 图14Model Information 界面参数配置如表 5 所示:参数CANN Machine(仅Windows 系统支持此参数) 说明自动填充。远程连接ADK 所在环境的 SSH地址,表现格式为<username>@localhost:端口号。Model File模型文件。必填。该模型文件需要取消其他用户写的权限。 有两种选择方式: 1.单击右侧的文件夹图标,在后台服务器路径选择需要转化的模型文件并上传。 2.在参数后面的输入框中自行输入模型文件在后台服务器的路径,包括模型文件名称。Weight File 权重文件。当原始框架是Caffe时,该参数存在且必填:1. 如果模型文件和权重文件存在于后台服务器同一目录下,且名称和模型文件名称相同,则选择模型文件后,权重文件会自动填充。 2. 如果模型文件和权重文件存在于后台服务器不同目录下,或者在同一目录下,但名称和模型文件名称不相同。 Model Name 模型文件名称,必填。选择模型文件后,该参数会自动填充,用户可以根据需要自行修改名称,要求如下: 1. 只支持 a-z、A-Z、0-9、下划线以及短划线的组合,最多支持 64 个字符。 2. 如果模型转换的输出路径已经存在相同名称模型文件,单击“Next”后会提示覆盖原有文件或重命名当前 Model Name 的信息,用户根据实际 情况选择。Target SoC Version模型转换时指定芯片型号。请根据板端环境具体芯片形态进行选择。Input Format 输入数据格式。 1. 当原始框架是Caffe时,取值为 NCHW、ND(表示支持任意格式,N<=4),默认为 NCHW。 2. 当原始框架是 MindSpore、ONNX 时,取值为 NCHW。 3. 当原始框架是 TensorFlow 时,取值为 NCHW、NHWC、ND、NCDHW、NDHWC,默认为 NHWC。Input Nodes 模型输入节点信息。 1. 如果选择模型文件并且解析成功,则该参数下方会展示模型输入节点的 shape 信息以及 Type 信息。 2. 如果选择模型文件后,无法解析“Input Nodes”,该场景下,需要用户根据模型文件中的相关信息手动输入:单击该参数右侧的,在弹出界面中输入模型输入节点的 Name、Shape 信息(只支持英文逗号,数字(-1或大于0的整数),不能以英文逗号开头,只能以数字结尾)和输入节点的数据类型 Type。单击删除节点信息。 3. 如果模型有多个输入,解析成功后,“Input Nodes”参数下方会展示每一个输入节点的 Shape 信息和 Type 信息。Shape 模型输入的 shape 信息,例如图 20 中的数值分别代表输入数据的 N(模型一次处理的图片个数),C(Channel,例如彩色 RGB 图像的 Channel数为 3),H(Height),W(Width)。若开启 AIPP 功能,则此处的 H,W取值即为 AIPP 输出数据的高和宽。Type Type:指定输入节点的数据类型。 1. 若原始框架类型为 Caffe、ONNX,支持的数据类型为 FP32、FP16、UINT8。 2. 若原始框架类型为 MindSpore,支持的数据类型为 FP32、UINT8。 3. 若原始框架类型为 TensorFlow,支持的输入数据类型为 FP32、FP16、UINT8、Int32、Int64、Bool。Output Nodes 指定输出节点信息。 单击“Select”在弹出的网络拓扑结构中,选中某层节点,右击选择“Select”,该层变成蓝色,单击“OK”后,在“Output Nodes”参数下面会看到标记层的算子,右击选择“Deselect”取消选中。 1. Op Name:标记层的算子名称。 2. Data Type:算子输出的数据类型,包括 FP32、UINT8、FP16,通过该参数用户可以设置单个算子的输出数据类型。 “Output Nodes”参数下方“Select”层的算子,默认为全部选中,用户可以自行选择将不需要输出的算子去勾选,只有选中的算子才会作为模型的输 出。本章节以选中所有算子为例进行说明。 某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以通过单击“Select”按钮,在弹出网络拓扑结构中将所需层的算子标记为“Select”,然后在“Output Nodes”参数下方选中想要输出的算子,模型转换后,在相应.om 模型文件可以看到该算子的输出直接作为模型的输出。Load Configuration 导入上次模型转换的配置文件。 如果用户之前转换过模型,无论成功与否,在$HOME/modelzoo/${ModelName}/device/路径都会生成${Model Name}_config.json 配置文件,该文件记录用户模型转换时所选择的配置信息,包括所用模型路径、模型名称、输入输出配置,数据预处理配置等,下次重新转换模型时,通过单击“Load Configuration”选择相应路径下的配置文件,则相应的配置信息会自动填充,用户自行决定是否沿用上次配置还是修改配置后重新进行模型转换。表5 图15如图15所示,模型转换成功。3.5数据处理了解了数据处理的代码,接下来我们执行代码选择Run->Debug,进入图16的界面。 图16我们在Command Arguments输入我们需要的运行参数,第一个为配置推理文件,第二个为开启mask,第三个为选择需要测试的数据集,第四个为msame的路径,第五个为中间文件暂存路径,第六个为om路径选择,第七个为推理设备选择。如果在命令行执行,则命令如下:命令:python3.7 $workdir/SiamMask_test.py --config config_vot.json --mask --refine --dataset VOT2016 --msame_path $workdir/tools --save_path $workdir/om_io_files --om_path $workdir --device 0 执行“SiamMask_test.py” 脚本会自动将VOT2016数据中的数据进行处理,并将测试结果保存在“SiamMask/experiments/siammask_sharp/test/VOT2016”文件夹中。执行结果如图17所示,该数据处理需要耗时1day。 图17 3.6 Benchmark 模型推理由于 CANN 5.1.RC1 和 MindStudio 5.0.RC1 版本不发布 Benchmark 工具,若需要在MindStudio 环境下使用该工具,请安装 CANN 5.0.3 版本下的Benchmark 工具以及 3.0.3 版本的 MindStudio。具体说明请见     https://www.hiascend.com/document/detail/zh/mindstudio/50RC1/msug/msug_000335.html。 图18所以我们采用 Mindstudio 客户端的远程终端 Remote Terminal 进行 Benchmark 工具的使用。在菜单栏选择“Tools> Start SSH Session”,选择我们配置好的远程连接,如图18所示。 然后我们需要获取 Benchmark 工具软件包,并进行解压。在解压后的文件夹下,获取 Benchmark 工具 Benchmark.{arch}。{arch}为 CPU 架构,取值为 aarch64 或 x86_64。 这里我们选用的是Benchmark.x86_64。将  Benchmark.x86_64和准备好的的模型 OM 文件上传到服务器的任意路径下。设置环境变量。 CANN 软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。设置方法如下: # 以 root 用户安装 toolkit 包 . /usr/local/Ascend/ascend-toolkit/set_env.sh # 以非 root 用户安装 toolkit 包 . ${HOME}/Ascend/ascend-toolkit/set_env.sh 进入 Benchmark 工具所在路径,执行如下命令增加对工具的可执行权限: chmod +x benchmark.{arch} Benchmark工具支持的运行参数及其说明请参见表6。参数说明是否必填[-batch_size, -bs]执行一次模型推理所处理的数据量。是[-device_id, -di]运行的Device编号,请根据实际使用的Device修改。缺省值为0。 否 [-om_path, -op]经过ATC转换后的模型OM文件所在的路径。请参见准备相关数据文件获取。是[-round, -r] 执行模型推理的次数,取值范围为1~1024。 是表6命令:./benchmark.x86_64 -round=10 -om_path=mask.om -device_id=0 -batch_size=1 > perf_mask.txt./benchmark.x86_64 -round=10 -om_path=refine.om -device_id=0 -batch_size=1 > perf_mask.txtecho "====performance data===="python3.7 test/parse.py perf_mask.txt perf_refine.txt执行命令运行 Benchmark 工具,命令及其运行结果如图19所示:  图19   运行结果参数说明见表7。参数说明ave_throughputRate模型的平均吞吐率。单位为samples/s。 ave_latency模型执行的平均时间。单位为ms。表7在310,310P,T4上都对模型进行了性能的测试,性能结果如表8所示。ThroughoutRate310(FPS)310P (FPS)T4(FPS)310P/310310/T4bs13121712371712/312312/37表8性能在310P上的性能达到310的5.49倍>1.2倍;310性能达到T4性能的8.43倍>1.6倍;故性能达标。  3.7 精度验证调用SiamMask_eval.py 脚本与数据集标/home/dyl1/SiamMask/SiamMask/experiments/siammask_sharp/test/VOT2016里的txt文件比对,可以获得数据,结果保存在 log_test.txt中。命令: python3.7 SiamMask_eval.py --dataset VOT2016  --tracker_prefix C  --result_dir $expdir/test/VOT2016 执行命令运行精度验证的命令,其运行结果如图20所示。 图20输出结果如表9所示:  原始精度310精度310P精度bs10.4270.4270.427表9得到的310P上的 om 离线模型推理精度与310上的 om 离线模型推理精度的精度对比,精度下降在 1%范围之内,故精度达标。 4 FAQQ:当使用 Benchmark 时,碰到图 21 的 bug: 图21A:这是由于我们环境配置错误,运行如下命令即可: source /usr/local/Ascend/ascend-toolkit/set_env.sh Q:当数据处理时,碰到图 22 的 bug: 图22A:这是由于我们环境配置错误,导致不识别$expdir,运行如下命令即可: export workdir=`pwd` \export modeldir=$workdir/SiamMask \export expdir=$modeldir/experiments/siammask_sharp \export PYTHONPATH=$PYTHONPATH:$modeldir:$expdir Q:当模型转换时候时,碰到图 23 的 bug: 图23A:这是由于我们的项目出了问题,点击 File-New,新建一个项目即可。 5 从昇腾社区获得更多帮助 在使用 MindStudio 的过程中遇到了问题,开发者可以来昇腾社区获得更多的帮助。 昇腾官网:https://www.hiascend.com/ 昇腾社区:https://bbs.huaweicloud.com/ 昇腾论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html 
  • [问题求助] 【MindStudio】【Debug调试报错】MindStudio SSH远程连接200DK环境(DD镜像)
    【功能模块】MindStudio SSH远程连接200DK环境(DD镜像)使用的镜像CANN版本5.1.RC1.alpha005MindStudio版本5.0.RC1MindStudio不能远程连接200DK环境进行Debug调试(SSH连接的python文件是/usr/local/python3.7.5/bin/python3)。【操作步骤&问题现象】1、在  setting -> SSH Configurations 下配置 SSH信息1、在project Structure 配置python SDK。然后在Project Settings -> Project 下配置 Project SDK2、在 Tools - > Deployment 下配置代码部署映射路径。【截图信息】【日志信息】(可选,上传日志内容或者附件)sftp://HwHiAiUser@192.168.1.2:22/usr/local/python3.7.5/bin/python3.7 -u "/home/HwHiAiUser/.mindstudio/python_helpers/pydev/pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 47146 --file "/home/cwd/modulation-recognition-interface/test2.py" Traceback (most recent call last):  File "/home/HwHiAiUser/.mindstudio/python_helpers/pydev/pydevd.py", line 16, in <module>    from _pydevd_bundle.pydevd_collect_try_except_info import collect_return_infoModuleNotFoundError: No module named '_pydevd_bundle'
  • [新手课堂] linux常用命令
    系统信息 arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息cat /proc/interrupts 显示中断cat /proc/meminfo 校验内存使用cat /proc/swaps 显示哪些swap被使用cat /proc/version 显示内核的版本cat /proc/net/dev 显示网络适配器及统计cat /proc/mounts 显示已加载的文件系统lspci -tv 罗列 PCI 设备lsusb -tv 显示 USB 设备date 显示系统日期cal 2007 显示2007年的日历表date 041217002007.00 设置日期和时间 - 月日时分年.秒clock -w 将时间修改保存到 BIOS ### 关机 (系统的关机、重启以及登出 ) shutdown -h now 关闭系统(1)init 0 关闭系统(2)telinit 0 关闭系统(3)shutdown -h hours:minutes & 按预定时间关闭系统shutdown -c 取消按预定时间关闭系统shutdown -r now 重启(1)reboot 重启(2)logout 注销 ### 文件和目录 cd /home 进入 '/ home' 目录'cd .. 返回上一级目录cd ../.. 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目录pwd 显示工作路径ls 查看目录中的文件ls -F 查看目录中的文件ls -l 显示文件和目录的详细资料ls -a 显示隐藏文件ls *[0-9]* 显示包含数字的文件名和目录名tree 显示文件和目录由根目录开始的树形结构(1)lstree 显示文件和目录由根目录开始的树形结构(2)mkdir dir1 创建一个叫做 'dir1' 的目录'mkdir dir1 dir2 同时创建两个目录mkdir -p /tmp/dir1/dir2 创建一个目录树rm -f file1 删除一个叫做 'file1' 的文件'rmdir dir1 删除一个叫做 'dir1' 的目录'rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容rm -rf dir1 dir2 同时删除两个目录及它们的内容mv dir1 new_dir 重命名/移动 一个目录cp file1 file2 复制一个文件cp dir/* . 复制一个目录下的所有文件到当前工作目录cp -a /tmp/dir1 . 复制一个目录到当前工作目录cp -a dir1 dir2 复制一个目录ln -s file1 lnk1 创建一个指向文件或目录的软链接ln file1 lnk1 创建一个指向文件或目录的物理链接touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)file file1 outputs the mime type of the file as texticonv -l 列出已知的编码iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick) ### 文件搜索 find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录find / -user user1 搜索属于用户 'user1' 的文件和目录find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 结尾的文件并定义其权限find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备locate *.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令whereis halt 显示一个二进制文件、源码或man的位置which halt 显示一个二进制文件或可执行文件的完整路径 ### 挂载一个文件系统 mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出fuser -km /mnt/hda2 当设备繁忙时强制卸载umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用mount /dev/fd0 /mnt/floppy 挂载一个软盘mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrommount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrommount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrommount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享 ### 磁盘空间 df -h 显示已经挂载的分区列表ls -lSr |more 以尺寸大小排列文件和目录du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)dpkg-query -W -f='{Installed-Size;10}t{Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统) **用户和群组**groupadd group_name 创建一个新用户组groupdel group_name 删除一个用户组groupmod -n new_group_name old_group_name 重命名一个用户组useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户useradd user1 创建一个新用户userdel -r user1 删除一个用户 ( '-r' 排除主目录)usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性passwd 修改口令passwd user1 修改一个用户的口令 (只允许root执行)chage -E 2005-12-31 user1 设置用户口令的失效期限pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组 ### 文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消 ls -lh 显示权限ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限chown user1 file1 改变一个文件的所有人属性chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性chgrp group1 file1 改变文件的群组chown user1:group1 file1 改变一个文件的所有人和群组属性find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限chmod u-s /bin/file1 禁用一个二进制文件的 SUID位chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的chmod g-s /home/public 禁用一个目录的 SGID 位chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件chmod o-t /home/public 禁用一个目录的 STIKY 位 ### 文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 chattr +a file1 只允许以追加方式读写文件chattr +c file1 允许这个文件能被内核自动压缩/解压chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接chattr +s file1 允许一个文件被安全地删除chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件lsattr 显示特殊的属性 ### 打包和压缩文件 bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件bzip2 file1 压缩一个叫做 'file1' 的文件gunzip file1.gz 解压一个叫做 'file1.gz'的文件gzip file1 压缩一个叫做 'file1'的文件gzip -9 file1 最大程度压缩rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包rar a file1.rar file1 file2 dir1 同时压缩 'file1', 'file2' 以及目录 'dir1'rar x file1.rar 解压rar包unrar x file1.rar 解压rar包tar -cvf archive.tar file1 创建一个非压缩的 tarballtar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件tar -tf archive.tar 显示一个包中的内容tar -xvf archive.tar 释放一个包tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包tar -jxvf archive.tar.bz2 解压一个bzip2格式的压缩包tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包zip file1.zip file1 创建一个zip格式的压缩包zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包unzip file1.zip 解压一个zip格式压缩包 ### RPM 包 - (Fedora, Redhat及类似系统) rpm -ivh package.rpm 安装一个rpm包rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告rpm -U package.rpm 更新一个rpm包但不改变其配置文件rpm -F package.rpm 更新一个确定已经安装的rpm包rpm -e package_name.rpm 删除一个rpm包rpm -qa 显示系统中所有已经安装的rpm包rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包rpm -qi package_name 获取一个已安装包的特殊信息rpm -qg "System Environment/Daemons" 显示一个组件的rpm包rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表rpm -q package_name --whatprovides 显示一个rpm包所占的体积rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本lrpm -q package_name --changelog 显示一个rpm包的修改历史rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书rpm --checksig package.rpm 确认一个rpm包的完整性rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间rpm -Va 检查系统中所有已安装的rpm包- 小心使用rpm -Vp package.rpm 确认一个rpm包还未安装rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包 ### YUM 软件包升级器 - (Fedora, RedHat及类似系统) yum install package_name 下载并安装一个rpm包yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系yum update package_name.rpm 更新当前系统中所有安装的rpm包yum update package_name 更新一个rpm包yum remove package_name 删除一个rpm包yum list 列出当前系统中安装的所有包yum search package_name 在rpm仓库中搜寻软件包yum clean packages 清理rpm缓存删除下载的包yum clean headers 删除所有头文件yum clean all 删除所有缓存的包和头文件 ### DEB 包 (Debian, Ubuntu 以及类似系统) dpkg -i package.deb 安装/更新一个 deb 包dpkg -r package_name 从系统删除一个 deb 包dpkg -l 显示系统中所有已经安装的 deb 包dpkg -l | grep httpd 显示所有名称中包含 "httpd" 字样的deb包dpkg -s package_name 获得已经安装在系统中一个特殊包的信息dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表dpkg --contents package.deb 显示尚未安装的一个包所提供的文件列表dpkg -S /bin/ping 确认所给的文件由哪个deb包提供 ### APT 软件工具 (Debian, Ubuntu 以及类似系统) apt-get install package_name 安装/更新一个 deb 包apt-cdrom install package_name 从光盘安装/更新一个 deb 包apt-get update 升级列表中的软件包apt-get upgrade 升级所有已安装的软件apt-get remove package_name 从系统删除一个deb包apt-get check 确认依赖的软件仓库正确apt-get clean 从下载的软件包中清理缓存apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 ### 查看文件内容 cat file1 从第一个字节开始正向查看文件的内容tac file1 从最后一行开始反向查看一个文件的内容more file1 查看一个长文件的内容less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作head -2 file1 查看一个文件的前两行tail -2 file1 查看一个文件的最后两行tail -f /var/log/messages 实时查看被添加到一个文件中的内容 ### 文本处理 cat file1 file2 ... | command file1_in.txt_or_file1_out.txt general syntax for text manipulation using PIPE, STDIN and STDOUTcat file1 | command( sed, grep, awk, grep, etc...) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"sed '/^/d' example.txt 从example.txt文件中删除所有空白行sed '/ *#/d; /^/d' example.txt 从example.txt文件中删除所有注释和空白行echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容sed -e '1d' result.txt 从文件example.txt 中排除第一行sed -n '/stringa1/p' 查看只包含词汇 "string1"的行sed -e 's/ *$//' example.txt 删除每一行最后的空白字符sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容sed -n '5p;5q' example.txt 查看第5行sed -e 's/00*/0/g' example.txt 用单个零替换多个零cat -n file1 标示文件的行数cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行echo a b c | awk '{print 1}' 查看一行第一栏echo a b c | awk '{print 1,$3}' 查看一行的第一和第三栏paste file1 file2 合并两个文件或两栏的内容paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分sort file1 file2 排序两个文件的内容sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)sort file1 file2 | uniq -u 删除交集,留下其他的行sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 ### 字符设置和文件格式转换 dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIXunix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOSrecode ..HTML page.txt > page.html 将一个文本文件转换成htmlrecode -l | more 显示所有允许的转换格式 ### 文件系统分析 badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 ### 初始化一个文件系统 mkfs /dev/hda1 在hda1分区创建一个文件系统mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统fdformat -n /dev/fd0 格式化一个软盘mkswap /dev/hda3 创建一个swap文件系统 ### SWAP文件系统 mkswap /dev/hda3 创建一个swap文件系统swapon /dev/hda3 启用一个新的swap文件系统swapon /dev/hda2 /dev/hdb3 启用两个swap分区 ### 备份 dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份restore -if /tmp/home0.bak 还原一个交互式备份rsync -rogpav --delete /home /tmp 同步两边的目录rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsyncrsync -az -e ssh --delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录rsync -az -e ssh --delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容 ### 光盘 cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中cd-paranoia -- "-3" 从一个CD光盘转录音轨到 wav 文件中(参数-3)cdrecord --scanbus 扫描总线以识别scsi通道dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD ### 网络 - (以太网和WIFI无线) ifconfig eth0 显示一个以太网卡的配置ifup eth0 启用一个 'eth0' 网络设备ifdown eth0 禁用一个 'eth0' 网络设备ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据
  • [技术干货] 检查系统是否存在密钥
    1.检查系统是否存在密钥:运行 Git Bash, 在弹出的终端中输入下面提示的代码/.ssh如果提示:No such file or directory 说明你是第一次使用git需要生成密钥。如果不是第一次使用您可以选择使用已有密钥或者重新生成密钥方式。2.备份并生成密钥:备份密钥(可选):mkdir key_backupcp id_rsa* key_backuprm id_rsa*生成新密钥:ssh-keygen -t rsa -C "您的email"在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入,建议采用不输入密码方式。密钥生成后您可以在你本机系统盘下,您的用户文件夹里发现一个.ssh文件,其中的id_rsa.pub文件里储存的即为刚刚生成的ssh公钥。
  • [问题求助] 【云服务器香港产品】【ssh功能】xshell登录不进去,ping不通
    【功能模块】【操作步骤&问题现象】1、防火墙已关闭2、端口已开启3,香港云ping内地也ping不通,ping谷歌可以ping通【截图信息】【日志信息】(可选,上传日志内容或者附件)