Linux
文章平均质量分 66
chocolate7777777
这个作者很懒,什么都没留下…
展开
-
VSCode远程调试linux环境的C/C++(三)
前面试着远程调试了个简单的C++程序,但实际项目模块很多,还用了很多第三方库,本来说是学习下CMAKE的,后来想着tasks.json中既然可以定义先cmake再make,那我本来已经make过的项目可以只选择make就可以了,再配置个launch.json是不是也可以加断点调试了,试了下果然可以,这比linux下调试方便多了。先打开整个项目的文件夹,按F5,选择添加launch.json,把以前的sh启动脚本放到launch.json里。再跟前一篇一样F9加断点,F5开始跑就可以单步调试了。原创 2024-02-29 15:58:09 · 447 阅读 · 0 评论 -
VSCode远程调试linux环境的C/C++(一)
第一次搭建该环境,记录一下。原创 2024-02-23 17:37:10 · 511 阅读 · 0 评论 -
VSCode远程调试linux环境的C/C++(二)
点击最左边的Run and Debug或者按F5即开始执行,可按F9加断点,左边可以看到停在断点时的堆栈,其它跟VS一样,可以按F10单步调试了。vscode里框架如下,刚开始没有lauch.json,点击最左侧的Run按钮可自动生成个,我自己添加了tasks.json。tasks.json代码如下,给出了linux下执行步骤,先cmake,再make,再build。launch.json代码如下,根据路径修改了 "program"安装成功后开始写代码测试,先写个最简单的,文件结构如下。原创 2024-02-28 14:24:12 · 488 阅读 · 0 评论 -
vmware上安装了ubuntu20的后续处理
命令行执行 sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf ,增加如下配置。命令行执行 sudo gedit /etc/pam.d/gdm-autologin,注释下图框出的行。命令行执行 sudo gedit /etc/pam.d/gdm-password,注释下图框出的行。命令行执行 sudo gedit /etc/gdm3/custom.conf,修改下面几行。修改/etc/gdm3/custom.conf。原创 2024-02-23 16:31:31 · 894 阅读 · 0 评论 -
Linux编程之epoll
现在有这么一个场景:我是一个很忙的大老板,我有100个手机,手机来信息了,我的秘书就会告诉我“老板,你的手机来信息了。”我很生气,我的秘书就是这样子,每次手机来信息就只告诉我来信息了,老板赶紧去看。但是她从来不把话说清楚:到底是哪个手机来信息啊!我可有100个手机啊!于是,我只能一个一个手机去查看,来确定到底是哪几个手机来信息了。这就是IO复用中select模型的缺点!老板心想,要是秘书能把来信息的手机直接拿到我桌子上就好了,那么我的效率肯定大增(这就是epoll模型)。转载 2023-07-10 10:39:43 · 87 阅读 · 0 评论 -
Linux编程之select
参数说明:maxfdp:被监听的文件描述符的总数,它比所有文件描述符集合中的文件描述符的最大值大1,因为文件描述符是从0开始计数的;readfds、writefds、exceptset:分别指向可读、可写和异常等事件对应的描述符集合。timeout:用于设置select函数的超时时间,即告诉内核select等待多长时间之后就放弃等待。timeout == NULL 表示等待无限长的时间/*秒 *//*微秒 */返回值:超时返回0;失败返回-1;成功返回大于0的整数,这个整数表示就绪描述符的数目。转载 2023-07-07 16:37:32 · 695 阅读 · 0 评论 -
linux useradd 命令基本用法
在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观。以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作。本文主要描述笔者在学习使用 useradd 命令时的一些测试结果。说明:本文中的所有试验都是在 Ubuntu14.04 上完成。转载 2023-06-16 09:27:08 · 799 阅读 · 0 评论 -
linux sudo 命令
简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。转载 2023-06-16 09:13:01 · 98 阅读 · 0 评论 -
linux kill 命令
使用信号 15 是安全的,而信号 9 则是处理异常进程的最后手段,请勿滥用。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-16 09:14:27 · 695 阅读 · 0 评论 -
linux sed 命令
基本命令格式sed [常用选项] 命令文本 输入常用选项-n (--quiet, --silent):安静模式。在 sed 的基本用法中,所有来自标准输出的信息都会被列出到终端上。加上 -n 参数后,则只有被sed 处理的那些行才会被输出。-e:指定在指令列模式上执行的命令文本。默认不需要指定,只有同时要执行多个命令文本时才需要显式的指定 -e 选项。-f:同时要执行多个命令文本时,可以将这些命令文本写到一个文件中,然后通过 -f filename 的方式使用。转载 2023-06-16 09:15:57 · 1521 阅读 · 0 评论 -
linux ls 命令
除了本文介绍的基本用法和常用的选项,ls 命令还有很多的选项可以提供更多的功能。比如 i 选项可以显示文件的 inode 信息等等。所以 ls 是一个看似简单实则功能强大的命令。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-16 09:15:30 · 833 阅读 · 0 评论 -
Ubuntu 中登录相关的日志
本文整理了 Ubuntu 系统中常见的一些与登录相关的文件和命令。通过它们可以快速的查看当前用户的登录情况和所有用户登录登出的历史记录,并且可以查询到用户使用 root 权限执行的操作。这对我们维护系统的安全和用户的管理都非常有帮助。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 15:38:27 · 2115 阅读 · 0 评论 -
linux dig 命令
dig 是一个很给力 DNS 查询工具,本文仅介绍了其常见用法,更多的命令选项及使用方法请查看 man page。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 15:36:31 · 411 阅读 · 0 评论 -
linux free 命令
下面先解释一下输出的内容:Mem行(第二行)是内存的使用情况。Swap行(第三行)是交换空间的使用情况。total列显示系统总的可用物理内存和交换空间大小。used列显示已经被使用的物理内存和交换空间。free列显示还有多少物理内存和交换空间可用使用。shared列显示被共享使用的物理内存大小。buff/cache列显示被 buffer 和 cache 使用的物理内存大小。available列显示还可以被应用程序使用的物理内存大小。转载 2023-06-15 15:26:06 · 102 阅读 · 0 评论 -
Linux 创建子进程执行任务
fork/vfork 函数和 exec 族函数都是 Linux 系统中非常重要的概念。本文试图通过简单的 demo 来演示这些函数的基本用法,为理解 Linux 系统中父进程与子进程的概念提供一些直观的感受。Linux C 编程一站式学习《Linux 环境下 C 编程指南》《深入理解 Linux 内核》sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 14:37:39 · 523 阅读 · 0 评论 -
Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止。如果子进程已经终止,那么,它的终止代号将告诉父进程这个任务是否已成功地完成。为了遵循这些设计原则,不允许 Linux 内核在进程一终止后就丢弃包含在进程描述符字段中的数据。只有父进程发出了与被终止的进程相关的 wait() 类系统调用之后,才允许这样做。转载 2023-06-15 14:29:37 · 100 阅读 · 0 评论 -
Linux Socket 编程简介
本文通过一个简单的建基于 TCP 协议的网络程序介绍了 linux socket 编程中的基本概念。通过它我们可以了解到 socket 程序工作的基本原理,以及一些解决性能问题的思路。基于TCP协议的网络程序sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 14:27:09 · 54 阅读 · 0 评论 -
linux ss 命令
由于性能出色且功能丰富,ss 命令可以用来替代 netsate 命令成为我们日常查看 socket 相关信息的利器。其实抛弃 netstate 命令已经是大势所趋,有的 Linux 版本默认已经不再内置 netstate 而是内置了 ss 命令。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 14:17:58 · 479 阅读 · 0 评论 -
linux systemctl 命令
systemctl 提供了管理 systemd 和系统服务的众多子命令。本文只是走马观花的把主要的子命令和一些常见的用法介绍了一下。对于这么一个庞大的命令集和相信只有在使用中不断的磨练才能够真正的掌握它们。《鸟哥的私房菜》systemctl 命令完全指南sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 14:11:29 · 558 阅读 · 0 评论 -
linux chroot 命令
chroot 是一个很有意思的命令,我们可以用它来简单的实现文件系统的隔离。但在一个容器技术繁荣的时代,用 chroot 来进行资源的隔离实在是 low 了点。所以 chroot 的主要用途还是集中在系统救援、维护等一些特殊的场景中。理解 chrootLinux – RedHat7 / CentOS 7 忘记root密码修改sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 14:01:07 · 2462 阅读 · 0 评论 -
Linux ln 命令
Linux 中的文件分为 Hard Link 和 Symbolic Link 两种。Hard Link 文件又被称为硬链接文件、实体链接文件,Symbolic Link 文件则常被称为符号链接、软链接文件。ln 命令用来在文件之间建立链接。在介绍 ln 命令前,让我们先来搞清楚究竟什么是硬链接,什么又是软链接。转载 2023-06-15 13:38:57 · 239 阅读 · 0 评论 -
Linux grep 命令
Grep 是 Global Regular Expression Print 的缩写,它搜索指定文件的内容,匹配指定的模式,默认情况下输出匹配内容所在的行。注意,grep 只支持匹配而不能替换匹配到的内容。语法格式:grep [OPTIONS] PATTERN [FILE...]grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]grep 支持不同的匹配模式,比如默认的 BRE 模式,增强型的 ERE 模式,还有更强悍的 PRE 模式。普通情况下使用默认的 BRE(转载 2023-06-15 13:10:56 · 123 阅读 · 0 评论 -
Linux 终端(TTY)
通过本文我们可以了解到,真正的硬件终端基本上已经看不到了。在一些连接了键盘和显示器的系统中(当然也包括一些 vsphere 等虚拟环境),我们可以接触到运行在内核态的软件仿真终端。而我们使用最多的则是伪终端。解密TTYLinux TTY/PTS概述终端、虚拟终端、shell、控制台、tty的区别sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 11:51:21 · 1611 阅读 · 0 评论 -
SSH 远程执行任务
本文通过 demo 演示了 ssh 远程操作的基本方式。这些基本用法将为我们在更复杂的场景中完成各种艰巨的任务打下基础。sparkdevsparkdev - 博客园本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。转载 2023-06-15 10:50:06 · 2454 阅读 · 0 评论 -
Linux mount 命令
mount 是 Linux 系统中非常重要的一个命令,因为离开 mount 挂载的文件系统我们几乎什么也干不了。本文介绍了一些 mount 命令的基础用法 ,日常使用应该是够了。mount 命令还有一些相关的复杂概念和用法,比如 bind mount 和 shared subtree 等,笔者会在今后写专门的文章进行介绍。Man pageLinux mount (第一部分)sparkdevsparkdev - 博客园。转载 2023-06-15 10:37:56 · 2521 阅读 · 0 评论 -
Linux df命令详解
df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。转载 2023-06-15 10:25:45 · 222 阅读 · 0 评论 -
Linux lsof命令详解
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TC和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。转载 2023-06-15 09:42:14 · 4542 阅读 · 0 评论 -
Linux rm命令详解
答案:rm只是减少了i_link的数量,实际就是将文件的inode的链接删除了,但是并没有删除文件实体(block数据块),如果停止机器工作,还是可以找回数据的。答案: 因为rm只是减少了i_nlink,如果没有其他的链接了[即i_link=0】,但由于文件依然被进程使用,所以即时执行了rm命令,系统并未真正的删除。Linux通过文件link的数量控制文件的删除,只有当一个文件不存在任何link的时候且没有程序调用的时候,文件才会被真正删除。删除一个文件,也是删除上一级目录的block里面的文件名。转载 2023-06-15 09:33:06 · 931 阅读 · 0 评论 -
linux开机自启动
这里要注意的是,systemd是linux发行版上的预装工具,用来管理系统软件的启动运行和结束,所以通常来说,这套东西是依赖于发行版的,如果系统使用了这一套工具,那么就可以使用它来管理进程,如果不是,即使你安装了它,它也不会被默认配置为系统管理工具。可以看到,这里在/etc/systemd/system/multi-user.target.wants/目录下创建了一个/usr/lib/systemd/system/test.service文件的软链接,到这里设置开机自启动就完成了。转载 2023-06-15 09:25:07 · 60 阅读 · 0 评论 -
GCC 编译流程简介
经过汇编生成的目标文件,如果是多个文件的编译,将会生成多个目标二进制文件,ld连接器将所有的二进制文件链接起来,根据平台的不同添加上不同的头部信息,分配内存空间,需要注意的是,在所有需要链接的目标文件中,有且仅有一个main()函数,main()函数作为程序入口函数只能有一个,否则会报错。很多朋友对库的概念应该不算陌生,经常会用到各种各样的库,但是仅仅停留在理解的层次而已,甚至都从来没有手动管理过库,其实可以说基本上每个程序员写的每个程序都要用到库函数,在C/C++语言中,最明显的例子就是包含头文件。转载 2023-06-14 14:42:29 · 38 阅读 · 0 评论 -
apt-get简介
在Ubuntu系统中,经常要用到apt-get install指令来安装软件,由于常常需要root权限来操作,所以搭配sudo食用口感更佳,apt-get指令对于安装、卸载、升级软件提供一条龙服务,对比于源码安装,实在是业界良心。转载 2023-06-14 14:13:11 · 861 阅读 · 0 评论 -
linux下nm命令的使用
nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件、库文件、可执行文件中的符号表,返回二进制文件中各段的信息。转载 2023-06-14 14:04:38 · 690 阅读 · 0 评论 -
Linux crontab命令详解
crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本 -->相当于闹钟日志文件: ll /var/log/cron*编辑文件: vim /etc/crontab进程:ps -ef | grep crond ==> /etc/init.d/crond restart作用:定时备份,实时备份。转载 2023-06-14 13:58:09 · 752 阅读 · 0 评论 -
Linux ulimit命令详解
ulimit 是一个计算机命令,用于shell启动进程所占用的资源,可用于修改系统资源限制。原创 2023-06-14 13:39:15 · 228 阅读 · 0 评论 -
Linux chattr 命令详解
查看加锁: lsattr /etc/passwd 文件加了一个参数 i 表示锁定。-d: 不可删除。转载 2023-06-14 13:21:06 · 1325 阅读 · 0 评论 -
Linux setenforce命令详解[SeLinux操作]
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。转载 2023-06-14 13:15:10 · 1021 阅读 · 0 评论 -
Linux top命令详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器top系统时间:19:27:01运行时间:up 54 min,当前登录用户: 1 user负载均衡(uptime) load average: 0.02, 0.03, 0.00average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。转载 2023-06-14 13:14:14 · 390 阅读 · 0 评论 -
Linux vmstat命令详解
其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存时,刚才被交换出去的页面文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同时交换空间也在被使用,就出现了刚才所说的现象了。我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。转载 2023-06-14 11:57:54 · 191 阅读 · 0 评论 -
Linux iostat命令详解
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。转载 2023-06-14 11:51:59 · 123 阅读 · 0 评论 -
Linux watch命令详解
watch可以帮你监测一个命令的运行结果,来监测你想要的一切命令的结果变化。转载 2023-06-14 11:37:24 · 166 阅读 · 0 评论