一、Linux编译器-gcc/g++使用 1.1 为什么我们可以用C/C++做开发呢? 无论是在windows、还是Linux中,C++的开发环境不仅仅指的是vs、gcc、g++,更重要的是语言本身的头文件(函数的声明)和库文件(函数的实现)。 所以我们在安装这些软件的时候,同时也选择了相关的开发包,会同步下载对应的头文件和库文件。 所以,makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 2.5 特殊符号 1、@和^ 分别指代依赖关系的前一个和后一个 2、依赖方法最前面+@ ——>对应的依赖方法在make后不会回显到屏幕上 三、Linux小程序-进度条 3.1 回车换行 其实回车和换行是两个概念
其中 ① INPUT_MAJOR:主设备号:13(如图1-2,定义在include\linux\major.h下)。 ② &input_fops:file_operations结构体(如图1-3)。 图1-1 图1-2 图1-3 《二》 file_operations结构体只有open函数,那么就看看open函数究竟做了什么?input_open_file()函数的实体如图2-1。 其中 ① iminor(inode):函数调用了函数MINOR(inode->i_rdev)(其中iminor函数原型如图2-2,通过获取子设备号左移5位后,获取挂载的input设备驱动的数组号,从而获得 图2-1 图2-2 图2-3 《三》 input_table[]数组从以上的代码中都没有赋值,那么他在哪里赋值的呢? 图8-1 下一篇:Linux input子系统的驱动开发
购买服务器 2020 年 10 月 21 日・Linux 专栏 前言 如果你第一次学习使用,请不要急着买服务器,因为买回来大概率要吃灰。你可以在看完学习完一些教程以后再选择一款便宜的服务器上手。 服务器选购的坑非常多,如果你啥都不懂就去百度搜索《适合小白的服务器》一定是一堆高佣金的 Aff 在等着你。所以购买服务器之前,你务必先了解一下服务器的配置。 流量是购买服务器最贵的一个环节,所以按你自己的需求购买,够用就行。 系统 服务器可以安装 Linux 系统,也可以安装 windows 系统。这要看你具体需求是什么,要拿服务器做什么用。 我们这里是学习 Linux,目前最流行的是 CentOs 和 debian 这两个系统。他们都是 Linux 系统,但是有一些使用上的差别。 如果不是想做 Linux 开发的同学我推荐选择安装 CentOs7 系列的系统。有的服务商提供这两个系统安装的时候价格不一样。
vim是linux中的一款命令行编辑器,功能强大,几乎所有的linux发行版都会预装。类似于c++和c语言,vim是vi的升级版,兼容vi的所有命令,同时拥有自己的新特性。 +linux命令:在不退出vim的情况下执行相应命令。 光标控制 Linux命令行操作没有鼠标的符号,这时候光标所在的位置就是我们要操作的位置。 补充: 1.vim打开一个文件时自动定位到退出时光标的位置 2.用vim打开文件时加上数字可以直接跳转到指定行
(2)只要有一方保持TIME_WAIT状态,就能起到避免incarnation connection在2MSL内的重新建立,不需要两方都有。 如何正确对待2MSL TIME_WAIT? 1、端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。 2、客户端只需保证该端口号在本机上是惟一的就可以了。 与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。 一般其默认的存储位置:/usr/include/linux/in.h 文件中。 各种socket地址结构体的开头都是相同的,前16位表示整个结构体的长度(并不是所有UNIX的实现都有长度字段,如Linux就没有),后16位表示地址类型。
且,一般来说客户端和服务器程序由一个开发团队创作,所以他们之间所采用的协议相对灵活。可以在标准协议的基础上根据需求裁剪及定制。例如,腾讯公司所采用的通信协议,即为ftp协议的修改剪裁版。 由于客户端和服务器都需要有一个开发团队来完成开发。工作量将成倍提升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的安全性构成威胁。 B/S模式相比C/S模式而言,由于它没有独立的客户端,使用标准浏览器作为客户端,其工作开发量较小。只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,不受平台限制。 2、服务器端回应客户端,是三次握手中的第2个报文段,同时带ACK标志和SYN标志。它表示对刚才客户端SYN的回应;同时又发送SYN给客户端,询问客户端是否准备好进行数据通讯。 2、服务器发出段8,应答客户端的关闭连接请求。 3、服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。 4、客户端发出段10,应答服务器的关闭连接请求。
正好我三年前在腾讯云上买的一台 2 核 4G 的虚拟机到期了,看了一下腾讯云的优惠活动,下单了一台 2 核 4G 的的轻量应用服务器(一年期,288 元)。 下面大致介绍一下我配置服务器的过程(安装及配置方法基本来源于对应工具官网)。 配置密钥登录 轻量应用服务器默认是从腾讯云控制台直接登录到终端,可以将自己的公钥加到 ssh 配置里。 install zsh sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 安装常用开发工具 在 Linux 平台上安装多版本的 Python,最方便的就是使用pyenv工具了。 总结 配置一台开发服务器还是比较麻烦的,以后有空的话或许可以研究一下ansible。
TCP CGI服务器(进程池) 原文是C++写的,我改写成了C版本。 } // task->m_buf[idx - 1] = '\0'; // 替换换行符\n为字符串结束符\0 task->m_buf[idx] = '\0'; // CGI服务器 for(int i=0;i<ret;++i) { switch(signals[i]) { case SIGCHLD: { // 由于这是一个CGI服务器 , SOCK_STREAM, 0); assert(listenfd >= 0); // 设置 {1, 0} 将导致close系统调用立即返回并且丢弃socket缓冲区的待发送数据 服务器的对连接 sudo gcc -g threadpool_server.c -lrt -lpthread 最后,再次感谢 游双 大佬的《Linux高性能服务器编程》。
2.1 Linux发行版选择 Linux是一类开放源代码和自由的类似Unix的操作系统,有众多发行版本。在服务器市场,Linux操作系统占有绝对的优势。 Redhat系列中典型代表是RHEL(Redhat Enterprise Linux)和CentOS,系统稳定性非常好,适合于服务器使用。 在IT行业中,Linux系统多用于服务器,而Linux桌面系统占有率较低。基于这样的事实,建议选择CentOS版本,用于服务器操作系统。 由于此虚拟机作为服务器使用,不需要使用图形界面,默认英语即可,单击“Continue”按钮进入下一步。 (2)编辑网络配置文件 这里需要只用到Linux的重要文本编辑工具vi, 其他的文本编辑器不一定存在,但是所有的类Unix系统都内嵌了vi编辑器。
V4L2:Video for Linux two,缩写 Video4Linux2,是 Linux 内核中的一个框架,提供了一套用于视频设备驱动程序开发的 API。 它是一个开放的、通用的、模块化的视频设备驱动程序框架,允许 Linux 操作系统和应用程序与各种视频设备(如摄像头、视频采集卡等)进行交互。 这种架构可以使开发人员更容易地开发新的视频设备驱动程序,并允许多个驱动程序同时使用相同的 API。 统一的设备节点:V4L2 提供了统一的设备节点,使应用程序可以使用相同的方式访问不同类型的视频设备。 从上面的特征可以看出,V4L2 提供了一套通用、灵活、可扩展的视频设备驱动程序框架,使得 Linux 操作系统和应用程序可以方便地与各种视频设备进行交互,并且不需要关心设备的具体实现细节。 从而让开发人员能够更加专注于应用程序的开发。 V4L2 视频采集步骤
安装code-server: curl -fsSL https://code-server.dev/install.sh | sh
你是否在担心你的服务器被暴力破解?你是否还在担心恶意频繁请求导致你的服务不可用? 今天带给大家一款开源防护工具 “Fail2ban” ,从此让你睡个安稳觉,起因是因为自己家里开了公网IP,对外映射了一个内网都Linux机器,方便自己从外面访问到家里,今天一看日志,好家伙,ssh登录失败上千次 Fail2ban官网:http://www.fail2ban.org/ Github开源地址:https://github.com/fail2ban/fail2ban 实战 1、安装Fail2ban # 3 `- Banned IP list: 192.168.1.12 可以看到我连续ssh登录错误之后 Banned IP 出现了我的机器IP,然后从此再也连接不上ssh了,只有通过可视化工具接管服务器删除被 Fail2ban常用命令备忘 fail2ban-client ping:测试fail2ban服务是否启动成功,成功会输出pong fail2ban-server -V:查看fail2ban版本号 fail2ban-client
那么该怎么去开发这个功能呢? 大致开发思路 上一篇是通过TCP返回一长串http的数据,分别为 header 和 body 部分。 \n" # 空一行与body隔开 # 设置内容body response_body = "
动态库⼀般后缀名为“.so” 静态链接操作:gcc code.o -o mycode -static 动态链接操作:gcc code.o -o mycode 2.自动化构建make/makefile 1.初识makefile makefile带来的好处就是⸺⸺“⾃动化编译”,⼀旦写好,只需要⼀个make命令,整个⼯程完全 ⾃动编译,极⼤的提⾼了软件开发的效率。 make是⼀个命令⼯具,是⼀个解释makefile中指令的命令⼯具,⼀般来说,⼤多数的IDE都有这 个命令,⽐如:Delphi的make,VisualC++的nmake,Linux下GNU的make。 makefile,并写入以上内容, :前为要生成的可执行程序的名字,:后为源文件(第一行为 依赖关系) gcc code.c -o code (第二行为 依赖方式) make指令完成编译 运行也成功 2. 先vim打开makefile,写入红框的内容 第一行表示 clean不依赖于任何文件 第二行为依赖方式 执行make clean,发现code(可执行文件)已经被删除 2.依赖关系的推导 test.c
1.小知识点 1.只有 文件的拥有者,或者root,能够修改自己的权限 2.Linux下可执行=可执行文件+可执行权限“x"(缺一不可) 3 user,group和other和我自己进行身份对比时,只比较一次 ,不是group*,自然不能进行写操作 1.chown指令 功能:修改⽂件的拥有者 格式:chown [参数] ⽤⼾名 ⽂件名 这里的sudo是指强制更改,前提是你必须是系统信任的人,即白名单 2. 2.如果没有”w“权限,就无法创建文件,删除,改变文件名等修改文件都不可以 3.如果没有”x“权限,就无法进入目录,也无法进行递归删除 2.缺省权限 小知识点1 666指的是 rw-rw-rw- 777指的是 rwxrwxrwx 小知识点2 umask的默认权限掩码为0002,我们只看后三位,这是一个8进制数字,转换为二进制为 000 000 010 我们将其按位取反得 111 111 解决other删除问题 可见rwx变为rwt,zs也无法再删除了,具体规则如下: group和other都不能删除文件,只有user可以 2.开发工具 1.yum具体操作 1.yum list | grep
一、NFS服务器介绍 1.1 什么是NFS服务器 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。 当我们在NFS服务器设置好一个共享目录/home/public后,其他有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端1与客户端2挂载的目录就不相同 GNU/Linux [wbyq@wbyq /]$ 2.2 安装NFS服务器 Ubuntu 系统在线安装NFS服务器: ubuntu@VM-0-7-ubuntu:/$ sudo apt-get install 配置例三 /work 10.0.0.0/24(ro) 说明:只读共享 用途:例如在生产环境中,开发人员有查看生产眼务器日志的需求,但又不希望给开发生产服务器的权限,那么就可以给开发提供从某个测试服务器 NFS客户端 上查看某个生产服务器的日志目录(NFS共享)的权限,当然这不是唯一的方法, 例如可以把程序记录的日志发送到测试服务器供开发查看或者通过收集日志等其它方式展现 配置例四 /work *(rw
2.改成以在服务器上npm run start的方式启动nuxt,监听3000端口,不会出现301请求了。但是静态文件会时不时出现404。 3.改成本地编译生成.nuxt文件夹之后,上传服务器启动。 * ${PRONAME}/*" 复制代码 4.正式服务器上通过pm2 管理nuxt项目。启动成功。 5.但仍有问题,部署过程中,需要在远程机器安装依赖,这个过程需要数秒钟。 "DB_ADAPTER=postgres" -e "DB_URI=postgresql://konga:konga@172.17.0.1:5432/konga" pantsel/konga 复制代码 服务器磁盘占满
在Ubuntu服务器上面的操作: 可以在Ubuntu 14.04 LTS, Ubuntu 12.04 LTS 和 Ubuntu 10.04 LTS 通过PPA找到最新的X2Go服务端版本。 先连接上你的Ubuntu服务器,使用下面的命令来安装PPA和相关的包。 install python-software-properties software-properties-common 添加PPA : sudo apt-add-repository -y ppa:x2go /stable 刷新包列表: sudo apt-get update 安装X2Go服务器端 sudo apt-get install x2goserver x2goserver-xsession 在这个例子里面我会使用XFCE4作为Ubuntu服务器的桌面环境,安装Xfce4 : sudo apt-get install xfce4
----这里用ffmpeg并不是做播放器,是在服务器上用,主要是处理视频文件。 (4)安装NFS服务器,主要是方便与本地Linux系统进行通信,编译代码,文件共享。 2. 部署NFS服务器 注意:在云服务器上搭建NFS服务器,需要在控制台开放端口,不然NFS的端口无法正常访问,会被拦截。 el6.nux.noarch.rpm (2)安装FFmpeg 和 FFmpeg开发包 sudo yum install ffmpeg ffmpeg-devel -y (3)测试ffmpeg是否安装OK 如果是桌面版Linux那就很简单的,直接在Qt官网上下载xxx.run安装包,在命令行运行就可以安装。 那如果在Linux服务器上如何安装Qt的编译环境? 因为可能有这么个需求,需要在Linux服务器命令行上编译Qt代码。 这种情况下就需要搭建一个Qt编译环境。
我们经常需要通过类UNIX下连接我们的Linux服务器。比如我的Mac下经常需要连接上Linux服务器。