
Linux
主要针对于Linux相关的介绍,内容包括Linux常见配置、Linux常用命令、Linux高级编程、Linux之Socket、Linux之Shell脚本编程。
Swxctx
喜欢技术、喜欢开源项目及分享。
铭心刻骨,就要一意孤行;越是憧憬,越要风雨兼程;要走多远,才算走进森林_xc。
展开
-
【Linux】- Linux性能调优技巧
在Linux系统管理中,性能调优是一项关键任务,旨在最大化资源利用效率,确保应用和服务运行顺畅。以下是一些基本的Linux性能调优技巧,可以帮助我们优化服务器性能。原创 2024-08-30 10:06:50 · 229 阅读 · 0 评论 -
centos防火墙关闭
CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下1、直接关闭防火墙systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动2、设置 iptables serviceyum -y install ip原创 2016-06-14 19:09:24 · 351 阅读 · 0 评论 -
socket
套接字允许两个不同的进程之间的通信相同的或不同的机器上。在Unix中,每个I/O操作都是由写入或读取一个文件描述符。文件描述符是一个打开的文件相关联的仅仅是一个整数,它可以是网络连接、一个文本文件中或一个终端,还可以是其他的东西。对于程序员套接字看起来和行为很像一个较低水平的文件描述符。这是因为命令,例如read()和write()和套接字方式同样,他们做的文件和管道的工作。套原创 2016-04-25 13:05:48 · 548 阅读 · 1 评论 -
IP地址
主机的IP地址或更常见的仅有的IP地址,用于识别连接到Internet的主机。 IP代表互联网协议,是指Internet层的整体网络架构的上网。IP地址是一个32位的解释为4个8位数字或字节的数量。每个IP地址唯一地标识用户参与的网络、网络上的主机和用户网络的一类。一个IP地址通常用点分十进制表示法的形式,如:N1.N2.N3.N4,其中每个Ni是一个十进制数介于0和255十进制(原创 2016-04-25 13:07:43 · 416 阅读 · 0 评论 -
socket结构
有各种不同的Unix套接字编程结构,用来保存地址和端口信息和其他信息。大多数socket函数需要一个指向一个socket地址结构作为参数。如下定义的结构与互联网协议的家族。第一个结构是struct sockaddr的持有套接字信息:struct sockaddr{ unsigned short sa_family; char sa_data原创 2016-04-25 16:06:33 · 745 阅读 · 0 评论 -
socket网络字节序
所有的计算机的字节存储在相同的顺序组成的多字节值。是由2个字节的一个16位的基于整数。有两种方法来存储这个值。Little Endian: 在这个方案中,低位字节存储在起始地址(A)和高位字节存储的下一个地址(A + 1).Big Endian: 在这个方案中的高位字节的开始地址(A),并存储在低位字节的下一个地址上存储(A+1).因此,不同字节序的惯例,机器可以进原创 2016-04-26 00:29:54 · 1169 阅读 · 0 评论 -
IP地址函数
以下三个函数调用用于IPv4寻址:(1) int inet_aton(const char *strptr, struct in_addr *addrptr):此函数调用指定的字符串转换,在互联网标准点标记,一个网络地址,并存储的地址提供的结构。转换后的地址将是网络字节顺序(字节下令从左至右)。这将返回1,如果字符串是有效的和错误0。以下是使用示例:#inc原创 2016-04-26 00:29:34 · 923 阅读 · 0 评论 -
socket函数
socket 函数:要执行网络I/O,进程必须做的第一件事是调用socket函数,指定所需的通信协议类型和协议族等。#include #include int socket (int family, int type, int protocol);这个调用给一个套接字描述符,可以用在以后的系统调用,-1为出错。参数:协议族原创 2016-04-26 00:29:17 · 422 阅读 · 0 评论 -
socket函数1
write 函数:write函数尝试写入n字节字节从缓冲区buf中相关的文件打开文件描述符,fildes指向。也可以使用send()函数将数据发送到另一个进程。#include int write(int fildes, const void *buf, int nbyte);成功完成后,write()返回fildes的文件实际写入原创 2016-04-26 00:28:48 · 422 阅读 · 0 评论 -
socket服务器代码
创建一个socket使用socket() 系统调用.使用bind()系统调用套接字绑定到一个地址。对于互联网上的服务器套接字,地址包括主机的端口号。 使用listen()系统调用连接监听。accept() 系统调用形式接受连接。此调用通常会阻塞,直到有客户端与服务器连接。发送和接收数据,使用read() 和 write() 系统调用。现在要把上面这些步骤转载 2016-04-26 00:28:29 · 640 阅读 · 1 评论 -
TCP之文件传输
程序分为发送端和接收端。首先在传输文件数据之前,发送端会把将装有文件名称和文件长度等信息的数据包发送至接收端。接收端收到文件名称和文件长度信息后会创建好空白文件。接着开始传输文件数据。下面介绍实现功能的主要过程:1.创建套接字、绑定、监听、连接、接受连接//创建TCP协议的套接字 m_Socket = socket(AF_INET, SOCK_STREAM, IPPRO原创 2016-06-28 17:33:39 · 681 阅读 · 0 评论 -
Linux部分命令概括
(一)系统管理与维护显示指定工作目录下的内容——ls显示当前工作目录——pwd改变工作目录——cd显示或修改系统时间——date设置用户口令(密码)——passwd切换用户——su清楚中断屏幕信息——clear显示历史操作命令——history显示指定命令的帮助——man显示目前登陆到系统的用户——who显示当前用户的信息——w显示操作系统的相关信息原创 2015-11-23 19:36:15 · 571 阅读 · 0 评论 -
Vi编辑器操作
(一)标签命令:tabe fn ——在一个新的标签页中编辑文件fngt ——切换到下一个标签页gT ——切换到上一个标签页:tabr ——切换到第一个标签页:tabl ——切换到最后一个标签页:tabm [N] ——把当前tab移动到第N个tab之后(二)窗口命令ctrl+w s ——水平分割窗口ctrl+w w ——切换窗口ctrl+w q ——退出当原创 2015-11-23 19:43:35 · 872 阅读 · 0 评论 -
Linux进程管理
(一)概念及分类1、进程:在自身的虚拟空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西都可以称为一个进程。但是进程和程序是有区别的,进程虽然有程序产生,但它并不是程序。2、分类(1)系统进程可以执行内存资源分配和进程切换管理工作,并且该进程的运行不受用户的干预(包括root用户)。(2)用户进程执行用户程序、应用程序或内核之外的系统程序而产生的进程(可原创 2015-11-23 21:34:24 · 1024 阅读 · 0 评论 -
Linux进程的创建
1、派生进程要创建一个进程,最基本的系统调用为fork。系统调用fork用于派生一个进程,声明格式如下:#includepid_t fork(void);pid_t vfork(void);调用fork时,系统将创建一个与当前进程相同的新的进程。它与原有的进程具有相同的数据、连接关系和在同一处执行的连续性。派生子进程示例#include#include#incl原创 2015-11-29 19:32:06 · 1059 阅读 · 0 评论 -
SHELL
linux 下寻求帮助 Help---(所要搜索的命令 --help)。Kernel---内核Man page---帮助(man + 所要搜索的命令),例如man ls(对ls进行帮助查找)。---输入/-命令,进行查找,例如(/-R),对R的命令进行快速查找。Q键为退出帮助界面。/ ---查找。例如(vi /etc/passwd)。/ ?---反向查找。man p原创 2015-11-30 21:13:31 · 452 阅读 · 0 评论 -
#include<sys/types.h>
#include 基本系统数据类型是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。NAME sys/types.h - data typesSYNOPSIS #include DESCRIPTION The header shall include de转载 2016-03-04 19:20:16 · 848 阅读 · 0 评论 -
进程控制
进程:进程是一个具有移动独立功能的程序的一次运行活动。特点:动态性 并发性 独立性 异步性进程ID:标识进程的唯一数字互斥:当若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。临界资源:操作系统中将一次只允许一个进程访问的资源成为临界资源临界区域:进程中访问临界资源的那段程序代码称为临界区。同步:转载 2016-03-04 19:30:03 · 357 阅读 · 0 评论 -
进程创建主要函数
fork---fork调用执行两次返回,从父进程和子进程中分别返回。vfork---并不完全复制父进程的数据段,而是和父进程共享数据段,vfork函数一般是与exec函数族的函数一起使用的,用来创建执行另一个程序的新进程。exec---exec函数可以执行新的程序,以新的程序替代原有进程。_ _clone---fork函数的变形,对父进程的共享资源提供了更多的控制。#include原创 2016-03-04 20:16:58 · 581 阅读 · 0 评论 -
SIGCHLD信号
SIGCHLD属于unix以及类unix系统的一种信号(Linux)产生原因 siginfo_t代码值1,子进程已终止 CLD_EXITED2,子进程异常终止(无core) CLD_KILLED3,子进程异常终止(有core) CLD_DUMPED4,被跟踪子进程以陷入 CLD_TRAPPED5,子进程已停止 CLD_STOPED5,停止的子原创 2016-03-04 20:18:29 · 682 阅读 · 0 评论 -
进程等待
进程等待——可以是进程组成员的等待,也可以是父进程对子进程的等待。当一个进程结束时,Linux将产生一个SIGCHLD信号通知其父进程。在父进程未查询到子进程的结束原因时,该子进程虽然停止了,但是并没有结束,这个时候的这个进程被称为zombie process(僵尸进程)。这个时候就需要使用进程等待的系统调用(wait / waitpid)#include#includepid_t原创 2016-03-04 21:21:27 · 492 阅读 · 0 评论 -
进程的终止
通常采用exit来结束一个进程相应的函数调用为:#includevoid exit(int status);int atexit(void(*function)(void));int on_exit(void(*function)(int void*),void *arg);void abort(void);#includevoid _exit(int status原创 2016-03-05 18:02:25 · 365 阅读 · 0 评论 -
进程ID与进程组ID
进程安全属性:实际用户标识符有效用户标识符文件系统用户标识符保存的用户标识符实际的组标识符有效的组标识符文件系统的组标识符保存的组标识符附加的组列表获取标识符函数调用#incldue#incldueuid_t getuid(void);//用于获得实际用户标识符gid_t getgid(void);//用于获得实际用户的组标识原创 2016-03-05 18:42:26 · 1497 阅读 · 0 评论 -
System函数
system函数---可使用system在系统中调用系统提供的各种命令。system的实现是通过调用fork/exec/waitpid等来实现的。函数声明:#includeint system(const char *cmdstring);cmdstring---字符串指针,用于指向表示命令行的字符串。调用fork函数失败,返回值为-1;调用exec失败,返回值为she原创 2016-03-05 19:22:05 · 359 阅读 · 0 评论 -
进程组ID
在系统中,一个进程除了进程ID外,还有一个进程组ID。进程组是一个或多个进程的集合,同一个进程组中的进程都有一个统一的进程ID。进程组ID与进程ID都是pid_t类型的数据获得一个进程的进程组ID可以采取如下调用:#include#includepid_t getgrp(void);在进程组中,有一个特别的进程leader,他的进程ID和它所在的进程组ID是一致原创 2016-03-05 20:07:20 · 508 阅读 · 0 评论 -
进程等待示例(wait与waitpid调用)
//三次派生子进程,并采用不同的方法结束子进程#include#include#includevoid x_exit(int status);int main(void){ pid_t pid; int status; if((pid=fork()) { pritnf("fork er原创 2016-03-06 15:12:06 · 364 阅读 · 0 评论 -
atexit函数示例
#include#incldue#include#includevoid forkerror(void);void excerror(void);int main(){pid_t pid;if((pid=fork()){atexit(forkerror);}else if(pid==0){printf("Child process PID原创 2016-03-06 15:35:54 · 357 阅读 · 0 评论 -
Linux进程时间片的分配(调度策略和参数)
在多进程系统中,多个进程“同时”运行,这里并不是真正意义上的同时运行,而是多个进程在时间片上面交换运行(每个进程运行一个时间片,然后切换到下一个时间片运行)。1.调度策略和参数在Linux系统中,对于每个进程,需要设定一个相应的调度策略和参数,在系统中,处理多进程的方式为“抢占”式的(一个进程使用CPU直至系统抢占CPU给另一个进程使用)设定和获取进程的调度策略和参数调用如下函数:原创 2016-03-06 16:32:46 · 8798 阅读 · 0 评论 -
进程时间片的分配(优先级设定)
系统对不同进程所分配的CPU时间的多少主要由进程的优先级决定。每一个进程都有自己的优先级都有自己的优先级。静态优先级高的进程会抢占低的进程。对优先级为0的进程将依照其动态优先级来分配运行时间,优先级的值越小,优先权越高。但是对进程执行一定的操作就可以改变其动态优先级。其操作如下:#incldeint nice(int inc);#include#includeint set原创 2016-03-06 17:13:02 · 6439 阅读 · 0 评论 -
线程
线程---在进程内部,可以将进程分成多个线程,其中,线程的调用是由系统内核调度程序来实现的,每一个线程都具有自己特有的线程号。1.线程的创建函数声明:#includeint pthread_create(pthread_t *thread,pthread_attr_t *attr,void *(*start_routine)(void*),void *arg);pth原创 2016-03-06 18:27:06 · 431 阅读 · 0 评论 -
文件类型
(1)普通文件普通文件也叫正规文件,最常用(见)的一种文件。其不包含任何文件系统的结构信息。文本文件:以字符(ASCII等)表示的,以行为基本单位的信息存储方式。二进制文件:按信息在内存中的格式表示的,通常不能直接查看,必须使用相应的软件才能查看。(2)目录文件目录文件是用于存放文件名及其相关信息的文件,是内核组织文件系统的基本节点。目录文件可以包含下一级目录文件或普通文件。原创 2016-03-06 19:49:21 · 514 阅读 · 0 评论 -
文件索引节点
所有的节点都有一个与之相连的索引节点,索引节点是用来保存文件信息的,包含以下信息:文件使用的设备号索引节点号文件访问权限文件链接的数量(硬连接数)所有者用户识别号组识别号设备文件的设备号以字节为单位的文件容量包含该文件的磁盘块的大小该文件所占的磁盘块最后一次访问该文件的时间最后一次修改该文件的时间最后一次改变该文件状态的时间这些信息存放在系统原创 2016-03-06 20:04:16 · 2838 阅读 · 0 评论 -
文件的创建
创建文件采用的系统调用为creat函数声明如下:#include#include#includeint creat(const char *pathname,mode_t mode);pathname 字符串指针,用于表示需要打开文件的绝对路径名或相对路径名。mode 用于指定所创建的文件权限调用成功时,返回值为文件描述符,反之为-1.mode取值S原创 2016-03-06 20:25:54 · 364 阅读 · 0 评论 -
#include<fcntl.h>
fcntl.h与unistd.hfcntl.h定义了很多宏和open,fcntl函数原型unistd.h定义了更多的函数原型close(关闭文件)表头文件#include定义函数int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参原创 2016-03-06 20:28:14 · 4726 阅读 · 0 评论 -
文件的打开
系统调用open打开文件,函数声明如下:#include#include#includeint open(coust char *pathname,int flags);int open(const char *pathname,int flags,made_t mode);pathname 文件名称mode 文件权限调用成功时,返回值为所打开文件的文件描述符,反原创 2016-03-06 20:59:36 · 373 阅读 · 0 评论 -
#include<sys/stat.h>
#include 文件状态,是unix/linux系统定义文件状态所在的伪标准头文件。含有类型与函数: dev_t st_dev Device ID of device containing file. ino_t st_ino File serial number.转载 2016-03-06 21:00:48 · 542 阅读 · 0 评论 -
Linuc shell编程几大循环与判断
for循环:for 变量名列表值、do命令语句命令语句donewhile循环:while 变量名列表值do命令语句命令语句doneif判断:(1) if条件 :then(2) if 条件命令语句thenfi命令语句ficase:case 待测试的变量或值in条件测试区原创 2016-03-06 21:30:46 · 485 阅读 · 0 评论 -
文件的关闭
在Linux系统中,关闭文件的系统调用为close其函数声明如下:#includeint close(int fd);fd 需要关闭文件的描述符调用成功时,返回值为0,反之则为-1,并且设置errno为EBADF(表示关闭的不是一个有效的,已经打开的文件描述符)对文件进行打开和关闭操作时,对其相关信息也会产生影响(打开一个文件时,该文件描述中的引用计数器加一;关闭一原创 2016-03-07 10:45:47 · 465 阅读 · 0 评论 -
文件重定向
1.重定向标准输出:不使用系统标准输出的默认设备,将输出结果直接写在一个新的文件中。command > file 把标准输出重定向到file文件中command >> file 把标准输出重定向到file文件中(追加在现有内容的后面)command 1> file 把标准输出重定向到file中> myfile 创建一个长度为0的空文件2.重定向标准输入:不使原创 2016-03-07 19:05:35 · 429 阅读 · 0 评论 -
文件定位
每一个打开的文件都有一个关联的“当前文件移位量”,它是一个非负整数,用来度量从文件开始处计算的字节数(一般读/写操作都是从当前文件移位量处开始的,并且使移位量增加所读写的字节数),系统默认打开一个文件时移位量被设置为0(没有指定O_APPEND的情况)lseek函数(显式地定位一个打开文件),函数声明如下:#incldue#includeoff_t(int fd,off_t off原创 2016-03-07 20:05:57 · 457 阅读 · 0 评论