
linux
文章平均质量分 51
modi000
生命不止,奋斗不息!
展开
-
Linux 软链接 与 硬链接 的区别
软链接(soft link):也称为符号链接(Symbolic Link),类似于 Windows 操作系统中的快捷方式文件,该文件有自己的名称、inode 和 物理存储的文件数据(记录着另一文件的路径名指向),访问该文件会被重新定向到软链接所指的源文件名。 硬链接(hard link):相当于为当前文件名对应的文件再创建一个文件别名,当前文件名与该文件别名对应的 inode 和 物理存储的文件数据 都是一样的,访问该文件别名同访问当前文件名一致。删除源文件,软链接会失效,硬链接不会;转载 2023-10-13 22:02:22 · 80 阅读 · 0 评论 -
总结软连接和硬连接区别
硬链接:硬链接的文件类型是,原来是什么就是什么,例如:原来是普通文件,还是普通文件。 软链接:删除一个软链接,链接数不会有变化,删除的相当于是一个文件(或快捷方式)。 软链接:软链接的原始文件路径是,相对的软链接的相对路径,而不是相对当前工作目录。 软链接:原始文件和软链接有依赖关系,原始文件删了,软链接就失效了。 硬链接:硬链接的相对路径,是相对的当前工作目录的相对路径。 硬链接:删除某一个硬链接,另一个硬链接不影响使用。 硬链接:删除一个硬链接,硬链接的链接数会有变化。转载 2023-10-13 21:41:38 · 1718 阅读 · 0 评论 -
凝思操作系统配置IP地址方法
1)未加allow-hotplug eth0 ip不生效;2)这句可以不加:gateway 193.168.100.1。另外,正如,windows系统一块网卡可以设置多个ip地址,方法3:/etc/systemd/network中配置。注意:第二个ip,没有添加gateway 那行。linux系统一块网卡,也可以设置多个ip。方法2:在/etc/rc.local中配置。如上,以此配置所有的eth*,,其他网卡 eth* 如上配置。...原创 2022-08-12 09:33:07 · 22122 阅读 · 1 评论 -
凝思系统ftp只能下载文件,不能上传文件
使用ftp命令连接成功后,发现使用put /test/1.txt /data/1.txt上传文件报如上错误。1)目标文件夹要有写权限,如果没有,通过chmod -R 777 文件夹 修改权限;但是使用 get /data/2.txt /test/1.txt 能正常下载。2)用户是否具有ftp权限,如果没有 ,通过 /etc/ftpusers,中修改。1)dpkg -l | grep vsftp //查看有没有安装该服务;也就是说此时能下载但是不能上传。原因:ftp的配置,未配置写功能。..原创 2022-08-12 08:56:27 · 3001 阅读 · 0 评论 -
解决Centos下vsftp无法上传文件的问题,附vsftp配置详解
当设置了该配置项后,用户登陆服务器后,系统就会到/etc/vsftpd/userconf目录下,读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。有点纳闷的是,他的根本就没开selinux,所以第②步根本没结果,理论上,这个解决办法应该没效果才对,可实际上,全部执行完成之后,发现可以上传文件和新建了。如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。..转载 2022-08-11 16:55:28 · 3547 阅读 · 1 评论 -
向脚本追加写内容
会在rc.local末尾添加如上的内容。原创 2022-08-08 17:00:36 · 275 阅读 · 0 评论 -
ftp上传和下载文件脚本示例
代码】ftp传送文件脚本。原创 2022-08-08 16:49:18 · 3659 阅读 · 3 评论 -
真正解决办法:FTP 执行命令时500 Illegal PORT command
上网搜索,很多人都人云亦云,自己都没试用。找了半天,终于找到了一个解决办法。原文链接:https://blog.youkuaiyun.com/quantum7/article/details/118079707。版权声明:本文为优快云博主「柳鲲鹏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。......转载 2022-08-08 16:52:01 · 3012 阅读 · 0 评论 -
凝思操作系统设置开机启动进程设置方法
此行代码,需要将普通用户提高打开串口的权限,无需手动输入密码。当然,还需要给普通用户配置为sudoer用户。在/etc/sudoers文件中,添加如下参考。添加普通用户为sudoers,原创 2022-07-25 16:48:07 · 3558 阅读 · 0 评论 -
linux系统无需设置密码自动登录用户
代码】linux系统无需设置密码自动登录用户。原创 2022-07-25 16:34:44 · 2275 阅读 · 0 评论 -
普通用户添加到root组命令
将test用户添加到root组。原创 2022-07-25 16:29:13 · 3906 阅读 · 0 评论 -
QNX系统和凝思系统分别系统时间设置RTC时间方法
system("rtc -s hw");凝思系统是通过如下命令达到相同效果。system("hwclock --systohc");我们知道,rtc时间是硬件时间,需要电池单独供电。(无法连接互联网。)比如,硬件设备,一上电后,系统时间会通过RTC获取。当然,rtc时间和系统时间需要通过GPS B码经常校准。我们平常的电脑,因为会连接互联网,时间是通过互联网对时的。...原创 2022-07-11 16:51:37 · 4464 阅读 · 0 评论 -
系统时间与 RTC 时间设置方法
转载:系统时间与 RTC 时间设置方法_Jackindata的博客-优快云博客_rtc设置时间方法说明嵌入式设备,尤其是带电池的设备,系统时间特别依赖于 RTC 来维持。这一般也没问题,都有成熟的实现方案。但涉及时区时,就有一些坑需要特别注意了。为了内核的运行可靠,RTC 的时区设置保持为 UTC,当系统时区不是 UTC 时需要特别注意设置方法,所以分两种情况进行说明。 关于 CST、UTC 的补充说明我们的北京时间是东部区,时区配置一般指定的城市为 Shanghai,标识为 CST(China St转载 2022-07-11 16:12:32 · 3536 阅读 · 0 评论 -
添加用户到sudoer列表中
转载:添加用户到sudoer列表中_newairzhang的博客-优快云博客_添加sudoer添加用户到sudoer列表中Linux默认是没有将用户添加到sudoers列表中的,需要root手动将账户添加到sudoers列表中,才能让普通账户执行sudo命令。root 账户键入visudo即可进入sudo配置,这个命令要比vim /etc/sudoers要好很多,因为使用visudo进行sudo配置,将会得到很多提示.键入visudo后,在编辑器下键入 /root 寻找root,找到第三个root的那一转载 2022-07-11 13:10:39 · 1847 阅读 · 0 评论 -
执行 sudo 命令下避免输入密码的两个方法
转载:执行 sudo 命令下避免输入密码的两个方法_frank_rabbit的博客-优快云博客sudo 命令默认是通过终端设备读取密码,这样每次执行命令都需要用户输入密码后才能继续运行。但对于需要定时执行的脚本,就只能修改 sudo 读取密码的方法了。下面分别是一个关机和一个重启脚本的例子:采用重定向的方法(关机)利用管道(重启)其中选项 -S(S是大写的)是使 sudo 命令用标准输入替代终端输入,这样 sudo 命令就可以从脚本中读取到密码(即脚本中的 password)。只是,这种两种方法均需要将明转载 2022-07-11 13:06:22 · 2042 阅读 · 0 评论 -
root用户下的程序移植到普通用户下运行出现段错误
原因:程序需要读写文件,但文件的权限只root用户具备;移植后,需修改配置文件的权限为普通用户也能读写chmod 777 -R *或者 chmod 666 -R *原创 2022-07-11 12:05:08 · 416 阅读 · 0 评论 -
创建用户(adduser和useradd)和删除用户(userdel)
转载:创建用户(adduser和useradd)和删除用户(userdel)及 - Aaron2705 - 博客园一 用户创建命令: # adduser 用户名 # useradd 用户名 1) useradd 与 adduser 的区别 在CentOs系统中: useradd与adduser是没有区别的, 都是https://www.cnblogs.com/guo-rong/p/9622732.html # adduser 用户名# useradd 用户名1) useradd 与 adduser 的区转载 2022-07-11 10:59:26 · 4337 阅读 · 0 评论 -
共享内存的理解及查看共享内存的方法
共享内存,其实就可以理解为进程之间的全局变量。进程1创建共享内存。进程2打开共享内存。原创 2022-06-29 16:55:23 · 2008 阅读 · 0 评论 -
在子线程中创建子线程及线程查看方法
小结:我们看到,son线程的退出,并没有影响到孙线程的运行,因为进程并未退出。 以上述方式一的形式查看线程:1)同一进程中的线程是平等的,没有父子之分。当然也包括所谓的主线程、在主线程中创建的线程、在所谓的子线程中创建的线程。线程既然是平等的,只要进程不退出,倘若son线程退出,我们看到不会影响到孙线程的运行。2)孙线程在子线程中创建,可以理解为,启动孙线程的顺序点是在此时,而并非在主线程中。也就是说,我们可以在任意我们需要创建一个平行任务的地方,创建一个子线程,而并非得在主线程中创建。3)线程函数,其实,原创 2022-06-02 09:44:39 · 2875 阅读 · 1 评论 -
Linux 线程调度与优先级
【转】Linux下线程学习笔记(一)-frankzfz-ChinaUnix博客Linux下线程的调度策略与优先级(一)-frankzfz-ChinaUnix博客Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3,SCHED_RR实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的R转载 2022-06-01 09:30:02 · 3372 阅读 · 0 评论 -
linux man手册
linux man手册,man 1 ,shell 脚本命令,man 2, 系统调用,man 3 库函数)原创 2022-06-01 08:34:39 · 622 阅读 · 0 评论 -
子线程先于主线程退出
参考该文,该文中已经列举了多种方法,实际中还可以如下操作:例如:当进程中有多个子线程,子线程中还有子线程。可以设计如下:进程中可以只对一个死循环的子线程中使用phtread_join操作,从而保证进程不退出。进程中的其他线程可以都使用 pthread_detach(pthread_self());(无论是进程中的,还是线程中的子线程),保证线程结束后,资源能够回收。...原创 2022-05-24 09:25:44 · 528 阅读 · 0 评论 -
线程和进程同步及进程间通信总结
一、线程(或进程)同步的理解互斥:两个线程(进程)不能同时访问同一资源,访问资源的顺序不确定。同步:两个线程(进程)具有一定的先后顺序来访问同一资源。(互斥的同时,线程(进程)需按照先后顺序访问资源。)比如:生产者和消费者,必须是现生产了才能消费;消费了才能有空地,继续生产。二、线程同步机制1、互斥锁1)如果一个线程加了锁,正在访问共享资源,失去了cpu,此时另一个线程没加锁,也是能访问共享资源的。这样就造成了混乱。解决方法:访问共享资源的线程都要加锁。2)pthread_t原创 2022-05-21 10:11:26 · 1718 阅读 · 0 评论 -
最全面的linux信号量解析
信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号量:(1) 内核信号量,由内核控制路径使用(2) 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEMV信号量。POSIX信号量又分为有名信号量和无名信号量。有名信号量转载 2022-05-19 10:57:07 · 3818 阅读 · 0 评论 -
进程间通信-信号量
#include <semaphore.h>int sem_init(sem_t *sem, int pshared, unsigned int value);Link with -pthread. sem_init() initializes the unnamed semaphore at the address pointed to by sem. The value argument specifies the initial value for t.原创 2022-05-19 00:00:29 · 150 阅读 · 0 评论 -
信号量函数(semget、semop、semctl)
二.System V信号量和Posix信号量区别 信号量有两种实现:传统的System V信号量和新的POSIX信号量。它们所提供的函数很容易被区分:对于所有System V信号量函数,在它们的名字里面没有下划线。例如,应该是semget()而不是sem_get()。然而,所有的的POSIX信号量函数都有一个下划线。下面列出了它们提供的所有函数清单: Systm VPOSIXsemctl()sem_getval...转载 2022-05-18 22:16:52 · 1047 阅读 · 0 评论 -
信号量详细解说
1、信号量概述进化版的互斥锁(1 --> N)由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住。这样虽然达到了多线程操作共享数据时保证数据正确性的目的,却无形中导致线程的并发性下降。线程从并行执行,变成了串行执行。与直接使用单进程无异。信号量,是相对折中的一种处理方式,既能保证同步,数据不混乱,又能提高线程并发。2、主要应用函数:sem_init() 函数 功能:初始化一个信号...转载 2022-05-18 21:52:40 · 1377 阅读 · 0 评论 -
操作系统——信号量(理解什么是信号量,信号量如何解决同步互斥问题,信号量一些注意点)
信号量是什么 信号量(semaphore)是操作系统用来解决并发中的互斥和同步问题的一种方法。 信号量是一个与队列有关的整型变量,你可以把它想象成一个数后面拖着一条排队的队列,如图: 那信号量上面值n代表什么意思呢? n>0:当前有可用资源,可用资源数量为n n=0:资源...转载 2022-05-18 15:12:54 · 4887 阅读 · 1 评论 -
进程间通信-消息队列总结
1、消息队列的创建与销毁原则:谁打开,谁关闭;谁创建,谁释放。被动端,进行消息队列的创建和销毁msqid = msgget( key, 0600|IPC_CREAT ) ;//创建flag = msgctl( msqid, IPC_RMID,NULL) ;//销毁主动端,无需创建和销毁。2、命令删除消息队列我们在做测试时,被动端是while死循环,不断的接收消息,while外才会销毁消息,(正常情况下,应该放在信号处理函数中)当我们ctlr+c结束该循环时,则导致并未执行原创 2022-05-18 12:28:01 · 412 阅读 · 0 评论 -
消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
消息队列函数由msgget、msgctl、msgsnd、msgrcv四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. msgget函数原型 msgget(得到消息队列标识符或创建一个消息队列对象)所需头文件#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>...转载 2022-05-16 15:40:28 · 3877 阅读 · 0 评论 -
Linux应用编程 | exec函数族
fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。将当前进程的.text、.data替换为所要加载的程序的.text、.data,然后让进程从新的.text第一条指令开始执行,但进程ID不变,换核不换壳。所谓exec函数族,其实有六种以exec开头的函数转载 2022-05-16 10:03:54 · 670 阅读 · 0 评论 -
进程常用的三个函数fork、exec、wait(few函数)
1、fork():创建子进程2、exec():子进程中执行别的程序3、wait():用在父进程中等待子进程结束后,回收子进程,解除阻塞;若子进程一直没有退出,则阻塞住父进程。注意:1)为了避免僵尸进程,fork要与wait成对出现。2)exec则一般是与fork连用,运行一个新的进程任务。例1:#include <QCoreApplication>#include <sys/types.h>#include <sys/wait.h&原创 2022-05-06 16:53:45 · 2882 阅读 · 0 评论 -
wait如何处理多进程(多个子进程)
#include <stdio.h>#include <stdlib.h>#include <unistd.h>/* linux 系统调用 wait() * 当用fork()创建子进程,子进程在退出后父进程没有调用wait * 就会产生僵尸进程. * * 下面是用fork循环创建多个子进程,在父进程里调用一次wait * 只能回收一个子进程. * * 下面展示如何用wait()回收多个子进程. * * */int main(void){ .转载 2022-05-14 01:45:05 · 824 阅读 · 0 评论 -
子进程回收(wait和waitpid)
一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量$?查看,因为Shell是它的父进程,当它终止时Shell调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。1、wait函数1>、该函数有三个功能:转载 2022-05-14 01:36:01 · 470 阅读 · 0 评论 -
创建子进程及回收子进程的两种方法
方法一:使用fork函数,参考该文#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>int main(){ pid_t pid; for(int i = 0;i<2;i++) { pid = fork(); if(pid<0) { p原创 2022-05-14 01:07:55 · 989 阅读 · 0 评论 -
wait()和waitpid()的参数解析
进程的等待#include <sys/types.h>#include <sys/wait.h>wait(),waitpid()区别:在一个子进程终止前,wait使其调用者阻塞,而waitpid有一个选项,可使调用者不阻塞;waitpid()并不等待在其调用之后的第一个终止的子进程,它有若干个选项,可以控制它所等待的进程;wait()pid_t wait(int *status);返回值:成功 成功结束运行的子进程的进程号 失败 返回-1 ..转载 2022-05-14 00:19:40 · 343 阅读 · 0 评论 -
fork()之后避免僵尸进程的三种方法
参考该文。在调用fork()执行后,可能会产生孤儿进程和僵尸进程,让我们一起看看到底什么是孤儿进程和僵尸进城以及怎么解决他们。一、孤儿进程:父进程结束, 子进程依旧存在。 那么子进程就被称为孤儿进程。 系统会将所有的孤儿进程挂载到 init 下。 init 进程的 pid = 1通过ps aux 查看,可以看到孤儿进程的父进程号为1.二、僵尸进程:1、进程结束, 但是 PCB 没释放2、子进程结束, 父进程未结束, 并且父进程未获取子进程的退出状态三、处理僵尸进程方法:1、原创 2022-05-14 00:13:50 · 930 阅读 · 0 评论 -
liunx系统下修改ip和mac
liunx系统下修改ip和mac。原创 2022-05-14 00:12:38 · 557 阅读 · 0 评论 -
linux的一些命令行操作
1、time 进程名 //显示进程运行的三种时间2、将临时文件重定向到/tmp中,开机/tmp中的文件会清空进程名 > /tmp/a.txt3、重定向到空设备中 /dev/nulltime ./test >/dev/null (time不是标准输出,无法重定向到文件)(用户真正体验到的时间是realtime)可以看到,dev/null中啥都没有,类似回收站????因为time重定向不过去,所以,以上两种方法可以仅查看time .而隐藏打印信息。4...原创 2022-05-14 00:12:13 · 295 阅读 · 0 评论 -
fork函数前使用printf等函数的注意事项
#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main(){ pid_t pid; printf("begin,pid=%d\n",getpid()); pid = fork(); if(pid<0) { perror("fork()"); }else if(pid == 0){ printf("c.原创 2022-05-13 20:22:56 · 353 阅读 · 0 评论