技巧类
linux命令类和shell技巧类
1、dd命令
可以拷贝一切,内存,磁盘,当设备出现问题,可以通过dd命令将内存数据拷贝出,无敌。
2、软连接
自己想要的软件直接到官网下载,或者交叉编译器可以直接使用此方法 。
1 | ln -s 【目标】 【链接到目标地址】 |
都是绝对地址。
另一种是设置环境变量的方式,设置的地址在/etc/profile
类似:export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
/usr/local/bin/
放置了一些软件的启动地址。
~/bashrc放置的是用户的一些个性化设置,也可以将环境变量放到里面。
bashrc的作用:1、可以在利用命名函数alias定制需要的指令;2、设定环境路径;3、提示符设置。
3、vim中w ! sudo tee %
%为当前文件,上面的作用主要是缺少sudo时,可以直接采用上面命令保存vim,避免尴尬。
4、grep -nR可以查看引用的字符串
5、find ./ -name “test” 可以查找文件
6、unzip解压乱码问题
unzip有时候需要去指定编码 unzip -O GBK xxxxx.zip
7、file 命令
查看可执行程序是否有动态库依赖
8、scp命令
- 使用git工具。模拟windos下的linux开发环境。常用的操作有scp操作将文件拷贝到开发版中。要求是开发板有ssh协议。
9、dig命令
查询域名解析
10、nm命令
查看可执行程序是否有动态库依赖,可查询函数在是否被引用过。
ubuntu设置
1、共享文件
从ubuntu20.04开始,设置共享文件就很麻烦
第一步:
安装samba:
1 | sudo apt install samba |
第二步;
创建一个共享文件夹
我以桌面Desktop为例子
第三步:
设置密码:
1 | sudo smbpasswd -a ygc |
第四步:
1 | sudo vim /etc/samba/smb.conf |
1 | [Desktop] |
linux命令
使用git工具。模拟windos下的linux开发环境。常用的操作有scp操作将文件拷贝到开发版中。要求是开发板有ssh协议。
1、vscode阅读源码 ubuntu
插件
1、c/c++
2、gnu global
3、gtags
需要https://ftp.gnu.org/pub/gnu/global/或者wget https://ftp.gnu.org/pub/gnu/global/global-6.6.6.tar.gz
1 | [hezz@ubu global-6.6 16:46]$ ./configure |
然后global –version查看版本
gnu global扩展配置中
Auto Update配置为“Disable”
这是因为我们的工程文件太大,一般的文件大于50MB就要禁用此项功能。
completion配置为“Disable”
是为了启用VSCode自带的代码自动补全功能,因为不禁用global自动补全功能的话,有些变量输入时无法进行自动补全。
详细百度安装配置。
2、其他扩展插件
1 | 1)、C/C++,这个肯定是必须的。 |
腾讯翻译api
SecretId SecretKey
AKIDmkimx48AHao5S0UnxhaWOE2mZSI5z1BZ NYbZTJ4rbCsWzJSSTSNC8yxvqcGtXN5d
clangd插件
步骤:
1、下载clangd
1 | sudo apt install clangd |
2、利用bear生成compile_commands.json
1 | bear -- make |
这里的bear只用去执行编译文件就可以
3、使用vim开发
第一步
vim控制光标流畅运行
第二部
第三步
快捷键
h j
第四步
删除 复制 粘贴 撤销快捷键
za zR zM zo za zf zd zj zk zz zb zt zc
搜索 /字符串 n/N 上下移动
4、vim的控制命令–s –c –d –y
操作
初始文本
1 | "hello world!" |
将光标移动到双引号内,按cs"'
1 | 'hello world!' |
接着将光标放入其中,按cs'<q>
1 | <q>hello world!</q> |
移除它,cst"
1 | hello world! |
光标移动到 hello上,按ysiw]
1 | [hello] world! |
将整行外加括号同时括号内再加一个空格 yss(
1 | ( [hello] world! ) |
删除括号 ds[ds)
1 | hello world! |
a
命令包括,i
命令内部
1 | ca{ |
4、cmake添加-g编译选项
有时候我们需要用gdb调试程序,需要为程序添加“-g”编译选项,那么cmake构建的项目该如何添加“-g”编译选项呢?此处收集了两种方式;
第一种
修改CMakelist.txt, 添加“add_definitions(“-Wall -g”)”行;
第二种
执行cmake时,添加-DCMAKE_BUILD_TYPE=Debug编译选项。
cmake -DCMAKE_BUILD_TYPE=Debug ……
建议使用第二种,可以不用改变CMakelist.txt。
cmake编译生成的makefile如何打印详细信息呢?在执行make 时添加“VERBOSE=1”,如果想加速编译速度,可以添加 -j 10 选项,后面的数字的最大值为本机的处理器核数。
5、file命令
file命令可以查看文件的格式,属于什么架构等等信息
6、服务器安装gitlab
- 第一步 安装依赖
打开终端,运行如下命令:1
2
3
4
5
6sudo apt update
sudo apt-get upgrade
sudo apt-get install curl openssh-server ca-certificates postfix
接下来会遇到如下界面,Tab切换到“确定”按钮,然后回车。
照样Tab切换到“确定”按钮,然后回车。
*第二步 安装Gitlab
先执行命令
1 | curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash |
前往Gitlab官网:https://packages.gitlab.com/gitlab/gitlab-ce,找到最新版本的gitlab-ce安装包,注意版本是ubuntu/focal。
通过wget方式在线安装gitlab,复制wsgt下载命令。
安装命令:
1 | wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.2.1-ce.0_amd64.deb/download.deb |
然后再解压:sudo dpkg -i gitlab-ce_16.2.1-ce.0_amd64.deb
运行完sudo dpkg后如果出现下面的界面就表示gitlab安装成功。
- 最后一步 配置gitlab
运行sudo vim /etc/gitlab/gitlab.rb来查看当前gitlab网页ip和端口号。
如果运行上述命令出现权限问题,运行下列命令即可:然后再运行1
chmod -R 755 /var/log/gitlab
进入gitlab的配置文件修改界面,输入i进入编辑模式,然后找到external_url字段(在第32行),改成自己需要设置的IP和端口号,IP我设置为本机的ipv4地址。1
sudo vim /etc/gitlab/gitlab.rb
修改完毕以后按esc键退出编辑模式,然后输入:wq保存即可。接下来通过下列命令重启服务。
1 | 停止gitlab服务 |
初始化管理员账户密码
1 | 切换路径 |
- 最后登录验证
接下来就可以通过http://192.168.17.128:8077来登录gitlab了。登录的地址是你之前设置external_url字段的值。
按下面的步骤将gitlab语言设置为中文:
注意点击Preferences
点击Save changes,刷新即可。
在账户搜索阶段,搜索root可能会出错,如果出错看下面解决办法
- 对于账户来说
1.进入控制台:2.定位到需要修改的用户1
2
3[root@hostname ~]# gitlab-rails console production
或者:
[root@hostname ~]# gitlab-rails console
方法一:
通过用户名查找(推荐):
1 | irb(main):001:0> user=User.where(username:'root').first |
另一种写法(只能定位到普通用户,很容易出错造成找不到用户,返回 => nil,没有此用户的结果):
1 | irb(main):002:0> User.where(name:'doudou').first |
方法二:
通过id查找(一般修改root使用,因为root id=1):
1 | irb(main):003:0> user=User.where(id:1).first |
方法三:
通过邮箱查找:
1 | irb(main):004:0> user=User.find_by(email:'123@qq.com') |
irb(main):005:0>user.password=12345678
=> 12345678
有字符的密码一定要有引号(等号两边有空格):
irb(main):006:0>user.password = ‘root@123’
=> “root@123”
1 | 4.确认新密码(可以省略): |
5.保存新密码:
1 | irb(main):022:0>user.save! |
最后是true就保存可以了!!!
1 | irb(main):023:0>exit |
扩展:
用脚本实现非交互式重置密码:
1.脚本需要使用到expect和spawn,yum安装一些包:
1 | yum install -y tcl tclx tcl-devel expect |
7、安装runner
打开gitlab pages功能
1 | sudo vim /etc/gitlab/gitlab.rb |
1 | Pages 服务地址 |
重新配置完重启
1 | sudo gitlab-ctl reconfigure |
安装runner
1 | For Debian/Ubuntu/Mint |
这部分在gitlab新建流水线的时候出现的token复制,按照上面提示的步骤
1 | sudo gitlab-runner register |
配置文件选择在gitlab的流水线上下,不单独去写配置运行文件
8、运行脚本
1 | cache: |
9、gitlab-runner一直处于pending状态原因分析
项目触发runner,一直处于pending
初步怀疑是runner卡住了,也有可能是因为服务器资源不足,在服务器上执行gitlab-ci-multi-runner list发现runer还在,
在执行gitlab-ci-multi-runner verify,发现runer还活着,但是就是一直不执行流程
有两个方法解决:
1、执行gitlab-ci-multi-runner run(不推荐使用)
他会去执行runner任务,但是每次都需要运行次命令才回去执行任务
2、执行gitlab-ci-multi-runner restart
重启runner,发现他会自动去执行触发runner的任务
10、vscode屏蔽不需要的文件
点击设置齿轮,点击设置,又上角json。
1 | { |
下面为跳转相关--很重要
1 | { |
11、使用cpolar进行网络穿透
账号862450734@qq.com
密码qq862450734
在ubuntu上安装cpolar就行
登录网址 172.0.0.1:9200
gitlab
账号 root
密码 qq862450734
虚拟机地址:9999
git工具
1 | git init // 初始化一个仓库 |
一般上传出问题,缺少关联,解决办法
1 | git remote rm 关联 |
远程版本先于本地版本,切换远程分支,查看更新log,然后拉远程代码和本地合并,解决完冲突在上传
13、gdb调试
1 | gdb ./a.out //调试文件 |
调试core,有的代码出现段错误后没有生成core文件,需要修改配置文件,执行ulimit -c unlimited
调试进程
1 | gdb -p 1234 |
调试线程
1 | info threads //查看线程 |
gdb设置日志
1 | set logging file /tmp/gdb.log |
gdb设置shell
1 | shell cmd |