常用的Linux操作指令和功能技巧

打印输出cmake所有环境变量用于组织工程并调试

get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
    message(STATUS "@@@ ${_variableName}=${${_variableName}}")
endforeach()

代码来源CMake官方文档: User Interaction Guide — CMake 3.29.6 Documentation

使用 cmake -P 命令脚本形式执行.cmake文件:
如果你的 .cmake 文件是一个独立的 CMake 脚本(通常称为 CMake 模块脚本),并且你只是想执行它,你可以使用 cmake -P 命令。但请注意,这通常用于执行包含 cmake_policy(), message(), set(), unset(), find_package(), 等命令的简单脚本。
但是,请注意,这种方法不会设置项目、目标或任何与正常 CMake 项目相关的内容。它只是一个简单的脚本执行器。

cmake -P /path/to/yourfile.cmake


 

cmake中打开gdb调试模式

# GDB
# SET(CMAKE_BUILD_TYPE "Debug")
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# add_compile_options(-g)

一. scp -r命令主机间文件复制
1. 从机器人下载文件到目录
# scp <用户名>@<服务器>:<服务器绝对路径> <本地目录>

scp ilufei@192.168.0.101:/home/ilufei/test.txt .

scp user@10.0.0.34:~/cpp/listener ~/Desktop

2. 上传文件到机器人目录
# scp <本地目录> <用户名>@<服务器>:<服务器绝对路径>

scp ./client  user@10.0.0.34:/home/user


3. 从机器人下载目录到本地目录 需要添加 -r 的参数
scp -r <用户名>@<服务器>:<服务器绝对路径> <本地目录>

scp -r ilufei@192.168.0.101:/home/ilufei/ .

4. 上传目录到机器人目录
# scp -r <本地目录> <用户名>@<服务器>:<服务器绝对路径>

scp -r . ilufei@192.168.0.101:/home/ilufei/ 

二. 找出来这个正在跑的程序并杀掉

假如正在运行了一个./mit_ctrl的进程。

1. 查找pid号

ps -ef | grep mit_ctrl

2. 根据输出的pid号,执行

sudo kill -9 pid

三. 重启sshd服务

systemctl restart sshd

四. ssh工具连接服务器时,需要很长时间,scp命令输入yes后卡住

解决scp命令输入yes后卡住不动的问题_田sir~的博客-CSDN博客_scp卡住不动

使用mobaXterm软件的ssh功能登陆。

关闭服务器ssh反向解析,需要使用root权限用户,修改/etc/ssh/sshd_config文件

vi /etc/ssh/sshd_config

然后在文件中,增加UseDNS no配置,即将dns反向解析功能关闭。如下:

 修改完毕后,退出保存。然后重启sshd服务

systemctl restart sshd

解决输入账号密码之后认证很慢问题:
           原因:是因为尝试了个没有意义而且会失败的 gssapi-with-mic 认证方式浪费了时 间,打开(远程服务器) /etc/ssh/ssh_config 把里面的GSSAPIAuthentication    yes 改成 GSSAPIAuthenticationno 关掉它,即可让 ssh 直接使用publickey 认证方式
                   ① 同样修改配置文件 vim /etc/ssh/sshd_config
                      将 GSSAPIAuthentication 字段改为GSSAPIAuthentication  no

五. 查看CPU个数

cat /proc/cpuinfo | grep vendor_id

六. 解决线程创建失败,增加线程数的上限到4M

ulimit -s 4000000

永久生效

解决方法1:

linux查看修改线程默认栈空间大小 ulimit -s ( ulimit:控制shell程序的资源)

a、通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M

b、通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M

c、可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空间大小

d、在/etc/security/limits.conf 中也可以改变栈空间大小:

#<domain> <type> <item> <value>

* soft stack 102400
重新登录,执行ulimit -s 即可看到改为102400 即100M

七. 开机自启动修改rc.local的技巧,因为修改rc.local导致无法进入系统。

写了个程序,需要开机自动启动,然后在rc.local里添加相应代码。后来程序运行起来了,树莓派起不来了,程序也结束不了。

如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其它进程,例如:

python /home/pi/mytest.py &

否则,这个脚本将无法结束,树莓派就无法启动。这个“&”符号允许命令运行在一个指定的进程中,然后继续运行启动进程。

另外,确保文件名使用绝对路径,而不是相对于你的home目录的相对路径。

八. crontab周期性执行任务

crontab -e有时不能打开编辑。可以进入该文件放置在/etc目录下,使用sudo nano /etc/crontab打开编辑。

比如写入以下内容,每天的13:58分时,都会创建一个test.txt文件,并写入一句话。

58 13 * * * root echo "this is a test!" > /home/nvidia/test.txt

九 shell脚本的写法,包含用户密码

模板如下:

#!/bin/bash
ps aux | grep ros |  awk '{print $2}' | xargs kill -9;ps aux | grep rviz |  awk '{print $2}' | xargs kill -9;roslaunch ur_robot_driver ur5_bringup.launch robot_ip:=192.168.1.100&
sleep 3;roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch&
sleep 2;roslaunch teleoperation camera_calibration_pub.launch&
sleep 2;python ~/lee/ThroatSwap/src/teleoperation/src/tcp_camera_uvual.py&
sleep 2;echo '123qwe' | sudo -S chmod 777 /dev/ttyACM0;roslaunch teleoperation run_touch.launch&
sleep 2;roslaunch teleoperation run_serial_control.launch&
sleep 2;rviz&

十. 报错找不到依赖库,但是确认过库已经放在相应的路径的情况下。

ldd ./walk_example

也是提示not found。

./walk_example: error while loading shared libraries: liblcm.so.1: cannot open shared object file: No such file or directory

链接器ld默认的目录是/lib和/usr/lib,如果放在其他路径也可以,需要让ld知道库文件在哪里。

解决方法1:

在/etc/ld.so.conf.d/目录下新建test.conf为后缀的文件,在该文件中加入库文件所在的目录(/usr/local/lib);

运行ldconfig,以更新/etc/ld.so.cache文件;

方法1:

编辑/etc/ld.so.conf文件,在新的一行中加入库文件所在目录;

运行ldconfig,以更新/etc/ld.so.cache文件;

重新运行程序即可。

十一. 没有显示器,使用ssh远程进行网络配置

1. ssh登陆

ssh user@10.0.0.34 -X

************************

如果ssh无法登陆,或者拒绝,检查远程端是否安装ssh-server并启动,如果没有,主机端只能接显示器,按照如下安装ssh服务器

sudo apt-get install openssh-server
sudo systemctl start ssh

*************************

X是shell与界面的连接协议,添加-X后才可以运行指令打开界面。

sudo unity-control-manager

即可打开系统设置界面,然后进行网络配置。

也可能是下面这个指令

sudo  unity-control-center

如果发现无法设置或保存,有可能是网络配置重名了,需要将之前的网络配置删除,执行

sudo nm-connection-editor

十二. 界面卡主,需要进入命令行执行一些操作

按键Ctrl+Alt+F1,会进入1号控制台,再执行reboot即可重启。

1、在alt+ctrl+f1~F6中重启gdm服务:
sudo /etc/init.d/gdm restart

sudo /etc/init.d/gdm stop
sudo /etc/init.d/gdm start

上面这个方法测试结果并不管用。

2、进入命令行Console,重新启动Xorg进程
按Alt+Ctrl+F1进入命令行Console(F1~F6均可,Ubuntu下默认有7个Console,其中tty7中跑的是图形桌面进程,其他只有简单的shell),此时需要再次登录。登录后运行以下命令查看进程

ps -t tty7

此时可以发现一个Xorg的进程,记下它的PID。

随后使用 kill -9 PID 将该进程kill掉,随后 Ubuntu 将自动重新启动Xorg,再次回到开机后的登录界面。

十三. 网络测试工具

iperf3能同时测速率、丢包率和时延

网络管理工具可以使用wiredshark

十三. 使用 indicator-cpufreq 设置你的 CPU 频率

高性能模式,退出节能模式

sudo apt install indicator-cpufreq
sudo reboot

十四. 使用sftp上传文件到服务器

1. 登录服务器

sftp zhuhongwu@10.60.170.131

password:

2. 指令操作切换到要放置文件的目录

3.将文件上传到服务器当前目录下

put /home/abc/catkin_ws/src.tar.gz  ./

4.将文件从服务器下载到客户端当前目录下

get remotefile  ./

Docker 使用技巧

Docker安装

https://zhuanlan.zhihu.com/p/651148141icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/651148141

国内docker hub在搭梯子之后可以访问,找到镜像后,使用带Tags的指令才能下载,直接使用overview指令可能无法下载。例如应该使用如下指令,冒号后是tag

docker pull stanfordnmbl/mocopaper:ploscompbio1

docker加载本地镜像,例如

sudo docker load < docker_images_ros2_x86.tar

5. 脚本中直接写入密码,脚本运行不需要再添加sudo

在modprobe can前面添加密码指令

echo "yahboom" | sudo -S modprobe can 
sudo apt-get install sshpass

从机器人端下载数据到本地,使用sshpass

PASSWORD="hello"
PORT=22
sshpass -p "$PASSWORD" scp -o StrictHostKeyChecking=no -P $PORT jetson@192.168.50.217:/home/jetson/Work/exoskeleton_v0/build/ss88.txt ./

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值