
Linux
文章平均质量分 56
王江奎
这个作者很懒,什么都没留下…
展开
-
Ubuntu install ‘Bash to dock‘
Ubuntu安装Bash to dock原创 2022-08-17 16:33:43 · 459 阅读 · 0 评论 -
muduo网络库使用入门
使用muduo网络库实现一个简单的echo服务器学习如何使用原创 2022-07-11 18:08:16 · 2221 阅读 · 0 评论 -
Clion远程部署和运行
绪论作为Clion的忠实粉丝,现在的我的几乎所有的coding都是通过Clion完成。因为需要在服务器上进行开发,又离不开Clion,就了解了如何通过Clion远程部署和开发。主要是借鉴了博客:使用Clion优雅的完全远程自动同步和远程调试c++。如果我哪里没有讲清楚可以去借鉴一下这篇博客。我们的目标是在本地进行编码,运行在服务器上。设置远程工具链更新/安装cmake借鉴了博客:在Linux上安装其他版本的cmake 或 升级cmake首先我们需要保证服务器上的cmake版本至少为3.19,否原创 2022-04-20 15:05:54 · 2204 阅读 · 1 评论 -
Ubuntu修复Fix Busybox Initramfs错误
今天早上我打开电脑,进入Ubuntu系统,结果黑屏了,屏幕显示:BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter 'help' for a list of built-in commands.(initramfs)然而我并不知道这个是什么意思,只能打开万能的谷歌搜索了一下,找到一篇解决问题的教程,按照他说的,我输入了exitfsck /dev/sda1 -yreboot然后解决了问题。虽然我转载 2022-01-21 16:03:54 · 2069 阅读 · 0 评论 -
vim命令笔记
vim折叠函数:https://www.cnblogs.com/zlcxbb/p/6442092.html原创 2021-09-10 10:26:43 · 140 阅读 · 0 评论 -
K210入门
之前购买了一个Sipeed Maix M1w Dock k210的开发板,想着自己鼓捣鼓捣,在网上看到了一些好的教程,在这里记录一下:嵌入式AI从入门到放肆【K210篇】-- 硬件与环境:介绍了各种开发环境的搭建,但是不是特别详细K210 MaixPy 从入门到飞升–AI视觉篇–完全教程(以及一些小问题处理比如内存不足):介绍了如何使用MaixPy进行开发,表示人生苦短,我用Python真不是吹的K210–运行NOMMU linux:Linux已经开始支持k210了,但是这个开发板没有MMU,内存也少原创 2021-06-17 15:05:02 · 2092 阅读 · 0 评论 -
Linux创建多个子线程并回收
创建子线程的逻辑相比子进程要更容易理解一些,因为线程没有像进程那样复制很多东西另起炉灶,子线程从传入的开始函数开始运行,但是难点在于传入参数和回收时获取退出状态,因为这两个原本都是void *类型的,而我们在使用时就必须进行转换。先上代码,然后再根据代码进行解释:void pthread_check(int ret, const std::string msg = "error", int default_ret = 0);using std::cout;using std::endl;names原创 2021-05-23 16:28:35 · 324 阅读 · 2 评论 -
Linux创建守护进程
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户(root)权限运行,因为它们原创 2021-05-13 16:27:27 · 585 阅读 · 0 评论 -
Linux创建多个子进程并通过捕获SIGCHLD信号进行非阻塞回收
我们通过fork函数创建多个子进程,并通过exec函数族在子进程中进行其他的工作,但是为了避免僵尸进程,我们要对子进程进行回收。常用的回收方式是wait或者waitpid进行阻塞回收,因为如果非阻塞回收很难把握时机,而阻塞回收将导致父进程无法进行其他的工作。通过子进程状态改变后会发送一个SIGCHLD信号这一机制,我们可以在父进程中将这一信号进行捕获然后进行非阻塞的回收子进程并保证能够回收所有的,也不需要通过sleep函数去强制保证异步。通过捕获SIGCHLD信号进行回收子进程最害怕的就是父进程还没有设置原创 2021-05-11 19:28:50 · 845 阅读 · 0 评论 -
Linux信号实现精确到微秒的sleep函数:通过sigsuspend函数解决时序竞态问题
原理就是先使用定时器定时,然后再使用pause函数或者sigsuspend函数主动阻塞挂起,最终恢复现场。如果使用pause函数的话,优点是使用简单,缺点是有可能产生时序竞态,导致进程一直阻塞下去:在定时和挂起之间有一个缝隙,有可能定时后因为其他原因没有直接挂起,而是被动挂起或者处理其他信号,但这段时间时钟还在继续计时,当时间到了以后信号就被发送,等回来主动挂起的时候再也等不到那个信号了,因此进程就会被一直挂起。为了解决这个问题,我们在定时前先将SIGALRM信号屏蔽,然后定时、挂起,在挂起的同时我们解除原创 2021-05-10 20:04:31 · 452 阅读 · 0 评论 -
Ubuntu20.04 Clion/Pycharm/IDEA 输入中文+光标跟随解决方案
之前一直用的搜狗输入法,但是搜狗输入法无法在Jetbrains全家桶下使用,但是又需要输入中文,没有办法我只能下载了谷歌输入法,十分难用,但是也没有其他办法,经常到网上看看有没有其他解决方案,有人说用百度输入法可以,但是百度输入法好像会出现乱码问题,找来找去感觉对fcitx输入法有点灰心,就转过头使用Ibus输入法,发现还是挺好用的,但是当我使用Clion的时候发现还是不能够输入中文,找到了一篇非常棒的博客解决了问题:https://junlu.club/2020/11/27/clion%E8%BE%93原创 2021-03-28 12:23:24 · 5266 阅读 · 1 评论 -
Ubuntu20.04 更新后黑屏无法加载驱动
本来我的电脑好好的,突然提示说有可应用的更新,我想都没想就直接更新了,可是没想到更新以后经过grub以后就会黑屏,一动不动,在网上搜索了许多,提到的说法是在grub界面对第一个Ubuntu的启动按e进行编辑在倒数第二行以linux开头的那一行(也有可能不是倒数第二行,我口胡的,但是是以linux开头的)有一个ro quiet splash ...,删除quiet splash(我找到的文章说这个可选,可是如果我不删除还是没有作用),然后在这个位置加上nomodeset,然后再按ctrl+x启动,发现仍然不原创 2021-01-12 20:43:59 · 1509 阅读 · 0 评论 -
SSH:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
给服务器重装了一下系统,结果报了上述错误:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!原创 2020-12-28 16:26:30 · 170 阅读 · 0 评论 -
Ubuntu使用jupyter notebook +导出PDF
因为最近需要做数据分析的工作,所以复习了一下numpy和pandas,并安装了jupyter notebook进行数据分析,这里记录一下环境的设置。ps:jupyter notebook真香安装python3 -m pip install --upgrade pip //升级pippip3 install jupyter使用在命令行里输入jupyter notebook就可以使用了,不过可能需要修改默认打开文件夹,可以在网上搜一搜,我这里没有修改的必要就没有弄导出PDF安装Pandoc参原创 2020-11-25 22:23:33 · 463 阅读 · 0 评论 -
浏览器访问本地文件
之前一直苦恼无法在浏览器访问本地文件,尤其是写的网页需要调用外部数据的时候,今天学习到可以用python很方便的解决问题如果有python3环境,直接在对应的文件夹下运行(这里是Ubuntu环境,如果是Windows应该在命令行也可以):python3 -m http.server xxx其中xxx是端口号,我们可以根据需要任意选择,最好选择1024以上的,因为1024以下的都是比较常用的端口,可能会和系统的一些功能发生冲突,而且还需要root权限运行上面的命令以后在浏览器运行localhost:原创 2020-11-17 21:26:30 · 5083 阅读 · 1 评论 -
Ubuntu Pycharm启动后卡住无法操作
昨天还好好的,今天打开Pycham突然卡住了,卡在了那个preparing workspace的地方,然后在网上搜索了很多方法都没用。直到在网上看到有个大佬说是因为搜狗输入法的问题,我才突然记起来昨天安装了搜狗输入法。。。kill掉卡住的Pycharm以后进入输入法配置,去掉搜狗输入法,重新打开即可...原创 2020-11-07 17:42:32 · 2531 阅读 · 1 评论 -
Linux Shell编程
本博客是阅读《Linux命令行与shell脚本编程大全》的读书笔记,持续更新中构建基本脚本使用多个命令可以在一行输入多个命令,不同命令之间用分号隔开原创 2020-10-24 11:37:18 · 161 阅读 · 0 评论 -
Ubuntu修改/删除主目录下的中文文件夹
在Ubuntu的主目录下一般是有一些中文的目录,例如桌面,视频等等,还无法修改名称,在一群英文文件夹里面显得有些突兀(Ubuntu终端下的中文一点也不好看),就想把这些文件夹修改一下,结果发现一般修改还修改不了。如果删除了文件夹例如桌面等还会造成糟糕的后果(home目录下的文件全部出现在了桌面)为了解决这个问题,可以修改~/.config/user-dirs.dirs来进行设置。把原来的中文文件夹修改为英文即可,当然也可以根据需要修改为自己喜欢的文件夹。...原创 2020-10-16 21:29:09 · 1211 阅读 · 0 评论 -
gbd + cgbd
gbd:传送门cgbd:传送门原创 2020-09-24 21:11:45 · 595 阅读 · 0 评论 -
Linux配置编程环境+云服务器上传文件
Java:https://www.cnblogs.com/lfri/p/10437266.html原创 2020-09-21 09:55:15 · 158 阅读 · 0 评论 -
Linux多进程拷贝文件
学习了mmap以后,实现一个简单的小程序,进行多个进程对一个文件进行拷贝。实现思想我们可以将原来的文件利用mmap分成多个段分别进行传输。实现代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h&...原创 2020-04-14 15:42:12 · 244 阅读 · 0 评论 -
Linux系统【五】进程间通信-共享内存mmap
mmap函数#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);参数:void *addr建立映射区的首地址,由Linux内核指定,所以我们直接传递NULL。也就是说虽然这是一个参宿但是并不需要我们传递,当建立好映射区以后映射...原创 2020-04-04 22:44:48 · 309 阅读 · 0 评论 -
Linux系统【四】进程间通信-管道
进程间通信(IPC Interprocess Communication)进程和进程之间的通信只能通过内核,在内核中提供一块缓冲区进行通信。内核提供的这种机制叫做IPC在进程间完成数据传输需要借助操作系统提供的特殊方法,如:文件(开销较大,稳定性低)、管道(使用简单)、信号(开销最小)、共享内存(共享映射区,可以完成没有血缘关系的进程之间的 通信)、消息队列、本地套接字(复杂,较难,最稳定)、...原创 2020-04-04 11:36:14 · 191 阅读 · 0 评论 -
Linux系统【三】回收子进程
孤儿进程父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,则称init进程领养孤儿进程。系统中有两个init进程,一个是root用户的,一个是当前用户的,root用户的init进程编号一般是1僵尸进程进程终止,父进程不进行回收,自己成残留资源(PCB)存放在内核中,变成僵尸进程。子进程死亡以后会将自己占用的内存(4G)释放,但是会将死亡信息放在自己的PCB中,希...原创 2020-03-26 12:58:35 · 331 阅读 · 0 评论 -
Linux系统【二】exec族函数及应用
文件描述符文件描述符表是一个指针数组,文件描述符是一个整数。文件描述符表对应的指针是一个结构体,名字为file_struct,里面保存的是已经打开文件的信息...原创 2020-03-22 17:19:42 · 227 阅读 · 0 评论 -
Ubuntu卸载软件
用过使用dpkg软件管理工具得到所有已经安装的软件,如果不清楚软件的全名可以使用grep命令进行查找然后再使用sudo apt-get remove --purge 软件名卸载软件(--purge参数会删除配置文件,删的干净一些)例如:...原创 2020-03-18 10:36:23 · 237 阅读 · 0 评论 -
Linux系统【一】CPU+MMU+fork函数创建进程
进程相关概念程序:编译好的二进制文件,在磁盘上,不占用系统资源(不包括磁盘)。(剧本)进程:占用系统资源,是程序的一次运行。(戏剧)一个程序可以产生多个进程,一个进程可以调用多个程序并发:并行执行单道程序设计:DOS系统多道程序设计:时钟中断中央处理器CPU存储介质:按照容量从大到小:硬盘->内存->cache(高速缓存)->寄存器预取器:从cache中取出指...原创 2020-03-16 22:27:45 · 346 阅读 · 0 评论 -
Linux命令【五】系统函数
系统文件函数stat函数指针如果没有const一般表示传出参数,如果加const表示传入参数struct statdev_t st_dev文件设备编号ino_t st_ino节点mode_t st_mode文件类型和存取权限,16bite,4bite文件类型 4bit特殊权限位 3*4bit访问权限nlink_t st_nlink文件的硬链接数目uid_t st_uid用户ID...原创 2020-03-15 15:06:21 · 401 阅读 · 0 评论 -
Linux命令【四】文件+虚拟内存+常用系统函数
File*其实是一个结构体文件描述符FD:索引到对应的磁盘文件文件读写位置指针FP_POS,如果同时读写需要注意文件指针的位置I/O缓冲区BUFFER:保存内存指针,默认大小是8kb,用于减小我们对硬盘操作的次数。因为我们对硬盘的操作是ms级别的,而我们电子设备的操作是ns级别的。刷新缓冲区到硬盘上:fflush、缓冲区已满、文件正常关闭、return main、exit mainLi...原创 2020-03-14 12:33:18 · 244 阅读 · 0 评论 -
Linux命令【三】gcc编译+静态库+动态库+makefile+gdb调试
用C编译器编译源文件:gcc 源文件 -o 可执行文件名详细步骤:gcc -E a.c -o a.i预处理器将头文件展开,宏替换,去掉注释gcc -S a.i -o a.s编译器将C文件变成汇编文件gcc -c a.s -o a.o汇编器将会变文件变成二进制文件gcc a.o -o a链接器进行链接ESc+链接如果不使用参数-o 则自动生成a.out制定头文件的路径gcc a....原创 2020-03-11 08:16:18 · 507 阅读 · 0 评论 -
vim环境配置 +vimplus配置
参考网站:传送门这个网站详细说明了vim配置的命令,我挑选了我想要用的部分,自己配置了一下。配置vim的文件有两个,一个是/etc/vim/vimrc 这个是系统配置文件,修改这个文件将会修改所有用户的vim环境,还有一个在宿主目录下,一般没有自己创建,需要我们手动创建文件~/.vimrccdvi .vimrc打开文件以后加入以下配置set number "设置行号"syntax...原创 2020-03-09 14:48:03 · 584 阅读 · 1 评论 -
Linux如何将文件中内容放到粘贴板上
没有找到如何在vim中将内容复制到粘贴板上,只找到了使用另一个软件进行操作。首先安装xselsudo apt-get install xsel# 将剪切板中的内容输出到文件echo $(xsel --clipboard) >> a.txt # 将文件的内容复制到剪切板cat a.txt | xsel --clipboard...转载 2020-03-09 14:46:18 · 2830 阅读 · 0 评论 -
Linux命令【二】终端+Vim
需要先安装net-toolsifconfigeth0 网卡,硬件地址为MAC 地址,网卡编号,绝对不会重复lo 回环地址测试两台主机之间能否通信:ping IP或域名 [-c 4//回馈四条信息 -i//每隔多少秒回馈一次]得到域名对应的IPnslookup 域名得到域名对应的IP添加用户sudo adduser 用户名 添加用户(用户名必须都是小写字母)su 用户名 切换用户...原创 2020-03-09 14:23:09 · 248 阅读 · 0 评论 -
解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题
参考博客:传送门下载[ttf-mscorefonts-installer.zip](https://pan.baidu.com/s/1i5rLfMH) 密码: h76g然后解压到下载的目录,在当前目录执行命令:sudo dpkg-reconfigure ttf-mscorefonts-installer这条命令手动指定文件夹的位置,重新配置下然后输入以下命令...转载 2020-03-08 08:42:47 · 1426 阅读 · 0 评论 -
Ubuntu环境搭建
Ubuntu环境搭建经验贴原创 2020-09-30 19:06:28 · 1333 阅读 · 0 评论 -
Linux命令【一】基本命令
shell命令和bash命令相同,指的是命令解析器快捷键history 所有的历史命令ctrl + P 向上滚动命令 ctrl + N 向下滚动命令 ctrl+B将光标向前移动 ctrl+F将光标向后移动 ctrl+A移动到命令行头部 ctrl+E移动到命令行尾部光标删除操作:删除光标前面字符ctrl+h或者退格建 删除光标覆盖的字符ctrl+d 删除光标前所有的ctrl+uTab键 自动...原创 2020-03-04 18:32:37 · 346 阅读 · 0 评论 -
Ubuntu根目录空间不足
自己在机械硬盘上安装的Ubuntu,结果只用了一天就显示磁盘空间不足。查看空间以后发现Ubuntu自己安装的时候默认给根目录分配的是10GB,然而我们下载的软件以及环境等一般都安装在根目录空间下,尤其是/usr目录所占的空间很大。不得已我在网上查找了如何给根目录增加空间,发现有一款软件:gpar...原创 2020-03-04 10:40:45 · 2072 阅读 · 0 评论 -
Ubuntu软件更新失败
刚安装好Ubuntu以后需要将系统的软件都更新一下,但是遇到一个问题就是下载仓库信息失败,大概是这个样子的错误:经国遇到这样的问题可以试一下下面这个命令:sudo rm -rf /var/lib/apt/lists/*sudo apt-get update参考网址:传送门...原创 2020-02-27 13:57:12 · 1038 阅读 · 0 评论 -
Ubuntu安装搭建Clion环境
呜呜呜,太辛苦了,我终于安装好这个了。大概过程就是先在官网下载安装包,然后解压以后用终端移动到对应文件夹下运行clin.sh运行完以后会有一些窗口,第一个选择don’t~~,然后点击ok然后接受(你可以不接受的试试)然后选择想要的皮肤,然后搭建环境,会有一个类似下面图片的框框让你填,你可以跳过一会再弄(当然你也可以直接弄,可以跳到后面看以下后面的)然后就是要登陆购买什么的,我因为嫌麻烦所...原创 2019-11-16 22:25:12 · 1838 阅读 · 0 评论