linux
文章平均质量分 59
l
lucky_白杨
且行且珍惜
展开
-
linux 查看海康相机信息
udevadm monitor 监听usb插拔事件cat /sys/class/pci_bus/0000:00/device/0000:00:14.0/usb2/2-1/product 查看usb信息cat /sys/class/pci_bus/0000:00/device/0000:00:14.0/usb2/2-1/serial 查看相机序列号原创 2021-08-03 21:06:19 · 897 阅读 · 0 评论 -
Unix C语言 POSIX 互斥锁 线程同步
文章目录模拟并发冲突出现该问题的原因POSIX的互斥锁由于线程的并发性,导致多个线程同时对同一个全局变量进行操作时,会出现数据不一致的情况。所以需要在线程中对全局变量的操作上互斥锁,来确保该操作同一时刻只能被一个线程进行,从而确保了数据安全。模拟并发冲突先不着急看互斥锁,先看下互斥锁可以解决什么问题。下面的代码有个int型的num全局变量,开启多个线程同时对该num进行+1的动作,每个线程+1执行1000000次,所有线程执行完毕后,num的值应该等于线程数*1000000。但由于并发执行,结果是原创 2021-04-05 09:40:16 · 300 阅读 · 1 评论 -
Unix C语言POSIX的线程创建、获取线程ID、汇合线程、分离线程、终止线程、线程的比较
文章目录创建线程创建线程函数概述创建线程代码示例获取线程ID获取线程id函数概述获取线程id代码示例汇合线程汇合线程函数概述汇合线程代码示例分离线程第一种方式:后标记分离线程代码示例:第二种方式:创建即分离线程代码示例终止线程代码示例创建线程POSIX标准线程接口需要引入<pthread.h>头文件。创建线程函数概述int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine原创 2021-04-04 11:54:30 · 886 阅读 · 0 评论 -
Unix/Linux IPC进程间通信 - 共享内存 C代码
文章目录概述创建共享内存生成共享内存key创建共享内存映射共享内存解除共享内存映射销毁共享内存ipcs与ipcrm命令C代码示例概述共享内存与管道相比,速度会更快,因为管道需要经过用户空间到内核空间再到用户空间的数据拷贝,而共享内存是在内核空间中分配一块物理内存,并在用户空间中创建一个虚拟内存与该物理内存进行映射,不同进程可以映射到内核空间中同一个共享物理内存,这样就实现了不同进程访问相同的物理内存,由于直接通过指针就可以访问并改变该物理内存,并且直接反应到其他进程中,没有数据拷贝的动作,所以比管道要更原创 2020-10-17 00:47:23 · 441 阅读 · 0 评论 -
Unix/Linux IPC进程间通信 - 有名管道、无名管道 C代码
文章目录IPC概述有名管道管道文件C代码无名管道C代码IPC概述Unix系统中每个进程都有自己独立的虚拟内存空间,除了每个进程的内核空间映射在相同的物理内存中,每个进程的用户空间都被映射在不同的物理内存中。所以,每个进程之间存在内存壁垒,进程之间无法直接通过交换虚拟地址来进行数据交换。那么需要实现进程之间的数据交换,就有了IPC(InterProcess Communication)机制,也就是进程间通信。有名管道由于内核空间在操作系统只有一份,被所有进程所共享,所以进程间通信就可以通过内核空间进行原创 2020-10-15 01:24:38 · 389 阅读 · 2 评论 -
C语言 实现账号密码每日自动变更 每日密码生成步骤
文章目录需求密码生成过程代码实现需求一些账号可能是提供给外部人员登录维护,需要将系统账号或者其他账号在每天都能自动更新,而无需人工更新。所以需求如下:1、更新的密码是按照特定算法加上给定的种子计算出来的2、在当天计算多次得到同一密码,不同日期计算出不同密码。3、生成的密码无规律可寻。密码生成过程1、用户名与iv向量值转成字节并累计成一个数字,然后加上当前日期作为种子数。2、将种子数通过混沌算法公式计算出一个数出来。3、将2步计算的数转成二进制(长度64)并取每隔8位取其一位,组合成一个8位原创 2020-10-13 00:17:48 · 1159 阅读 · 1 评论 -
Unix 太平间信号 僵尸进程的异步回收
文章目录僵尸进程回收的问题太平间信号C代码示例僵尸进程回收的问题当父进程的一个或多个子进程退出,子进程将变为僵尸进程,父进程在调用wait/waitpid函数对子进程进行回收之前,僵尸进程一直存在,并占用着pid。当父进程退出或者调用wait/waitpid函数,僵尸进程将被回收释放。更多关于僵尸进程可以查看我另外一篇博客Unix 孤儿进程、僵尸进程。如果父进程在调用wait回收子进程之前,有其他任务在处理,那么子进程退出之后变为僵尸进程,没有办法及时的回收。针对这个问题,可以使用太平间信号,来异步原创 2020-09-29 00:19:39 · 437 阅读 · 1 评论 -
Unix C进程信号处理
文章目录常用信号C捕获异常中断信号常用信号信号描述SIGHUP (1)控制终端被关闭SIGINT (2)终端中断符(ctrl+c)信号SIGQUIT(3)终端退出符(ctrl+)信号SIGABRT(6)abort函数产生SIGBUS(7)硬件或对齐错误SIGFPE(8)浮点计算异常SIGKILL(9)强制杀死进程SIGSEGV(11)非法内存访问SIGPIPE(13)写无读端管道SIGALRM(14)闹钟信号原创 2020-09-27 23:40:49 · 286 阅读 · 1 评论 -
Unix 孤儿进程、僵尸进程
孤儿进程当父进程退出,而其一个或多个子进程还处于运行状态,则子进程变为孤儿进程,其父pid变为1,即被init进程接管收养,init进程亦被称为孤儿院进程。僵尸进程当父进程的一个或多个子进程退出,子进程将变为僵尸进程,父进程在调用wait/waitpid函数对子进程进行回收之前,僵尸进程一直存在,并占用着pid。当父进程退出或者调用wait/waitpid函数,僵尸进程将被回收释放。僵尸进程的危害Unix在子进程退出时,会释放其内存空间以及占用的所有资源,但会为其保留进程pid号与退出信息等。除非原创 2020-09-24 01:49:16 · 329 阅读 · 1 评论 -
Unix 父子进程以及创建子进程
Unix 进程Unix系统中进程存在父子关系,父进程拥有多个子进程,子进程只能有一个父进程。pid为0的进程为调度进程,也是根进程。系统中所有的进程构成了一个以调度进程为根的进程树。pid为1的进程是init,init进程负责系统的初始化,同时也负责回收孤儿进程,称为孤儿院进程。当父进程通过fork创建子进程,会复制父进程中的数据区、BSS区、堆栈、命令行参数以及环境变量表到子进程中,只有代码区是共享的。为了创建子进程能更加的轻量,fork创建子进程时,不会进行复制的动作,子进程和父进程共享内存区,只原创 2020-09-22 23:59:36 · 2749 阅读 · 1 评论 -
Unix C 获取进程信息
#include <unistd.h>#include <stdio.h>int main(void) { pid_t pid = getpid(); // 获取当前进程pid pid_t ppid = getppid();//获取父进程pid uid_t uid = getuid();//获取实际用户id gid_t gid = getgid();//获取实际组id uid_t euid = geteuid();//获取当前有效用户id原创 2020-09-22 23:34:31 · 456 阅读 · 1 评论 -
Unix 硬链接与符号链接(软链接)
文章目录硬链接符号链接读取符号链接本身内容硬链接通过命令ln srcfile newfile创建的newfile即为srcfile的硬链接。硬链接的本质,就是一个字符串形式的路径和一个整数的i节点号的对应关系。硬链接的文件内容与创建时指向的源文件一模一样,把源文件删除,不会影响硬链接文件。在文件系统中的i节点维护了该文件的元数据,元数据中就有一个硬链接数,该硬连接数即表示有多少个硬链接文件指向了该i节点。每个普通文件,本身就是一个硬链接,只是硬链接数为1,每对该文件创建一个硬链接,那么硬链接数+1。原创 2020-09-13 18:12:32 · 1391 阅读 · 1 评论 -
Unix 文件锁(共享锁、排他锁)
文章目录文件锁锁类型共享锁(读锁)排他锁(写锁)fcntl函数+flock结构对文件锁的操作代码例子协议锁和强制锁文件锁Unix提供了文件锁机制来防止多进程对同一文件的并发操作导致的脏读和数据混乱,同时也为多进程提供了同步机制。锁类型共享锁(读锁)共享锁也称为读锁。如果一个进程为某个文件的某个区域加了一把共享锁,那么其他进程对该文件的该区域可以加共享锁不能加排他锁。排他锁(写锁)排他锁也称为写锁。如果一个进程为某个文件的某个区域加了一把排他锁,那么其他进程无法对该文件的该区域加任何锁,包括原创 2020-09-12 17:38:07 · 1345 阅读 · 1 评论 -
Unix文件系统
操作系统需将硬盘上面的i节点加载到内核空间中维护成v节点,每个i节点对于一个v节点。文件表项维护了文件的相关状态信息,并维护指向v节点的指针。内核空间的进程表项中,维护了每个进程对应的文件描述符表,每个进程拥有各自独立的文件描述符表,每个进程的文件描述符表默认打开3个,分别为0-标准输入、1-标准输出、3-错误输出。文件描述符的编号以小整数维护,即:始终返回最小可用的编号。子进程继承父进程的文件描述符表。文件描述符维护了文件表项的指针,当用户空间进程程序打开了文件,则在内核空间将创建一个文件表项,..原创 2020-09-10 00:32:46 · 735 阅读 · 1 评论 -
Unix C的内存分配与释放
文章目录简介标准C的动态内存分配与释放Unix C的动态内存分配与释放模型图例代码示例malloc和sbrk的区别简介Unix中应用程序操作的都是虚拟内存,而虚拟内存与物理内存存在一个映射,映射最小单位为页,一页为4098个字节。内存分配就是指建立一块虚拟内存与物理内存之间的映射。释放内存就是解除虚拟内存与物理内存的映射。标准C的动态内存分配与释放C中有多个存储类别,分别为:静态存储期、线程存储期、自动存储期、动态分配存储期。所有内存都需要预留足够的空间来存放数据,在函数中定义的非static变原创 2020-09-03 01:53:51 · 452 阅读 · 1 评论 -
Linux进程映象的内存布局
进程内存布局操作系统的进程内存分为5个区,代码区、数据区、BSS区、堆区、栈区,更高层就是命令行参数和环境变量表,进程的内核空间与用户空间分别对应不同的内存区。vmlayout.c#include <stdio.h>#include <stdlib.h>const int const_global = 1; // 全局常量 (代码区)static const int static_cons_global = 3; //全局静态常量 (代码区)int init_g原创 2020-09-01 02:43:55 · 423 阅读 · 1 评论 -
linux挂载hfsplus文件系统 mount: unknown filesystem type ‘hfsplus’
手里有个移动硬盘,插到机器上面并挂载的时候报xxx解决方案如下:需要安装kmod-hfsplus,这个软件在elrepo源,所以需要先安装elrepo。rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org如果是sentos8则安装yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm如果是sentos7则安装yum install http原创 2020-08-17 20:55:59 · 2245 阅读 · 1 评论 -
linux MacOS 批量重命名文件
要重命名文件,首先需要知道重命名哪些文件,find命令可以解决这个问题。find命令找到了需要重命名的文件之后,如何重命名,rename命令可以解决这个问题。两个命令通过管道组合一下就好啦。如果没有rename命令就需要安装一下。linux:yum install rename。mac:brew install rename。举个例子:当前目录下有n个bmp文件a1.bmpa2.bmpa3.bmp…现在需要把a*.bmp文件统一改成a*_.bmp,即:a1_.bmpa2_.bmpa原创 2020-08-07 02:02:13 · 523 阅读 · 0 评论 -
制作apt-get本地源解决无网络情况下安装软件
有的时候在无网络的情况下,需要在机器上面使用`apt-get`命令来安装所需要的软件。那么我们事先需要在有网络的机器上面制作一个`apt-get`的本地源,然后将制作好的本地源通过scp或者FTP上传到无网络的机器上面来安装必要的软件。原创 2020-06-15 17:37:39 · 6443 阅读 · 6 评论 -
shell实现config配置文件合并变更配置项
为什么采用增量配置conf文件?增量变更配置的几种类型新增[section]修改配置项删除配置项新增配置项混合变更配置shell实现config配置文件的增量变更。通常在项目中会使用config文件作为项目的配置文件,config文件一般由[section]和name=value组成。当然分隔符=或者:是可以根据自己来定的。文件的格式通常如下:[DEFAULT]service_phone=18888888888# 资源路径resource_dir=/xxx/xxx/xxx/#原创 2020-06-15 16:52:46 · 3950 阅读 · 0 评论 -
linux 挂载卸载移动磁盘设备
文章目录挂载磁盘卸载磁盘mount命令用来挂载磁盘umount命令用来卸载磁盘挂载磁盘比如usb插入了U盘之后,我们通过lsblk -P命令来查看块区,大概是下面的样子最后两行sdb就是插入的U盘,RM="1"表示为移动设备如果为0表示非移动设备。可以看到MOUNTPINT参数表示挂载点。空串表示还未挂载。挂载需要制定挂载目录用来访问磁盘设备。先创建一个目录/home/admin1/usb_mount_point我们知道了U盘表示的设备名为sdb1,可能你的设备名为sdc1,因为有可能有其原创 2020-06-01 21:29:49 · 1277 阅读 · 1 评论 -
解决Linux下同时使用有线和无线网络时,网络连接的优先级问题
问题是这样的:本人自己用一台Linux服务器,平时当FTP和爬虫用。还有一台mac开发用,经常需要用网线和linux通过网线直连来传输数据和控制服务器。蛋疼的事发生了:Linux服务器一旦插上网线,网络流量就只能经过有线网络了,导致Linux服务器不能上网。 查了很多资料,在我的服务器上都行不通。最后终于用route路由表配置默认网关解决了。具体方法很简单,如下:1.查看当前网关信息ip...转载 2020-04-27 22:01:42 · 5237 阅读 · 1 评论 -
Linux查看mac地址
方式一通过ifconfig命令查看对于网口的ether字段方式二这里我要查看eth0的网口mac地址cat /sys/class/net/eth0/address[Ryan@Ryan ~]$ cat /sys/class/net/eth0/address 00:16:3e:0c:44:de/sys/class/net/目录下记录了网口的信息如果有多个网口的话会有ech开头不同...原创 2020-03-27 17:47:47 · 43056 阅读 · 0 评论 -
linux下查看进程并杀掉进程
很多时候你会遇到不小心启动了多个tomcat的情况,那么会造成端口的占用,tomcat会出现异常,这就需要将之前的占用的端口进程杀掉… 看下面↓看是否已经有tomcat在运行了 ps -ef |grep tomcat 如果有,用kill; kill -9 pid #pid 为相应的进程号 例如 ps -ef |grep tomcat 输出如下 sun 5144 1 0 10:21 pt原创 2015-11-05 14:16:29 · 1949 阅读 · 0 评论 -
liunx vim命令编辑文件内容
有时候项目已经部署在了tomcat,但是需要修改某些配置文件里面的内容或者修改某个jsp文件的一点内容,你会想到把本地的改好的文件上传到服务器然后替换掉它,其实可以用vim命令直接编辑就好了…这里做个例子 ↓先在某个文件夹中创建一个文件 这里我先用mkdir命令创建了一个test文件夹,然后在test文件夹里面用vim a.txt 命令创建了一个a.txt文件。你会发现执行了vim a.tx原创 2015-11-05 16:03:35 · 9012 阅读 · 1 评论 -
linux命令
文件目录hehecd /home 进入 ‘/ home’ 目录’ cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件原创 2015-11-04 15:57:35 · 492 阅读 · 0 评论 -
linux关闭图形界面
1.在图像界面关闭x window: 1.1 shell中运行 init 3 进入文本模式,同时会关闭相关的服务(Xserver 肯定关闭) 1.2 Alt+Ctrl+F1~F6到字符界面,root登陆,ps aux|grep /usr/X11R6/bin/X,得到X进程号, kill -9 进程号,其实这时已经到文本界面了,没必要关X。(这样太粗鲁了)2.如果你想一开机后不进入X Wind转载 2015-11-09 14:29:54 · 8431 阅读 · 0 评论 -
Shell脚本教程
给地址:http://c.biancheng.net/cpp/view/6994.html原创 2015-11-10 18:33:53 · 589 阅读 · 0 评论 -
xshell桥接linux
在平时的开发过程中,经常会遇到这样的问题:在系统中安装虚拟机,在虚拟机中安装linux(ubuntu、redhat、suse….),启动linux后,要在宿主机和Linux之间切换(Linuxtoxp,按ctrl+alt),这样会增加按键的频率。 解决的方法就是:将虚拟的Linux作为一台单独的计算机,使用xshell连接,就像连接局域网内的一台计算机一样。 设置虚拟机VMWare使用桥接的方式,原创 2015-11-12 11:33:40 · 1100 阅读 · 0 评论 -
Nginx的学习
tomcat结合nginx使用小结: http://cxshun.iteye.com/blog/1535188原创 2015-12-02 13:19:33 · 448 阅读 · 0 评论 -
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot 错误解决方法
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot 错误解决方法原因解决方法第一种解决方法第二种解决方法原因从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。解决方法第一种解决方法将用户主目录去...原创 2018-11-04 17:16:40 · 7739 阅读 · 2 评论 -
linux启动关闭tomcat
启动tomcatcd /usr/local/tomcat7 进入tomcat文件夹 sh bin/startup.sh 启动tomcat 或者进入bin文件夹 cd bin 进入bin ./startup.sh 启动tomcat关闭tomcatcd /usr/local/tomcat7 同样进入tomcat7文件夹 sh bin/shutdown.sh 关闭tomca原创 2015-11-05 14:41:23 · 692 阅读 · 0 评论