Linux
kikajack
这个作者很懒,什么都没留下…
展开
-
Linux - 定位进程异常退出
系统上启动守护进程后,有时会异常退出。查看日志/var/log/messages 日志文件中放了进程退出的信息。dmesg | egrep -i -B100 'killed process'用 strace 命令追踪系统调用和信号手册:https://man7.org/linux/man-pages/man1/strace.1.html具体参数参考这里:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html查看 ti原创 2020-09-25 13:28:13 · 7374 阅读 · 0 评论 -
【APUE】文件属性
函数原型NAME stat, fstat, lstat, fstatat - get file statusSYNOPSIS #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *pathname, struct stat *statbuf); int fstat(原创 2020-08-20 09:49:31 · 218 阅读 · 0 评论 -
【APUE】目录操作
函数原型opendir #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); DIR *fdopendir(int fd);readdir #include <dirent.h> struct dirent *readdir(DIR *dirp);struct dirent 结构体定义: struct dirent { ino_t原创 2020-08-19 13:12:11 · 214 阅读 · 0 评论 -
【Linux 应用编程】基础知识
错误提示Linux 提供的系统调用API,通常会在失败的时候返回 -1。如果想获取更多更详细的报错信息,需要借助全局变量 errno 和 perror 函数:#include <stdio.h>void perror(const char *s);#include <errno.h>const char *sys_errlist[];int sys_nerr;...原创 2019-04-07 14:16:33 · 207 阅读 · 0 评论 -
【Linux 应用编程】文件IO操作 - 常用函数
Linux 系统中的各种输入输出,设计为“一切皆文件”。各种各样的IO统一用文件形式访问。文件类型及基本操作Linux 系统的大部分系统资源都以文件形式提供给用户读写。这些文件可以分为:普通文件:即一般意义上的磁盘文件;设备文件:系统中的具体设备;管道文件、FIFO 文件:用于进程间通信;套接字(socket)文件:用于网络通信方面。文件的通用操作为:打开、关闭、读、写、创建。对...原创 2019-04-06 22:37:03 · 682 阅读 · 0 评论 -
Linux 命令 - man 查看命令的文档
man 命令是 Linux 中最常用的命令,碰到任何让你疑惑的命令,都可以 man 一下来查看详情。不只是 shell 命令,C 语言库函数和系统调用等内容也可以通过 man 命令查看。man 命令默认查看的是 shell 命令的文档,可以指定参数 2 查看系统调用,3 查看 C 库函数(需要提前安装)。可以在 Linux 中直接输入 man man 查看 man 命令的帮助文档,最常用的就是查...原创 2019-01-27 13:46:02 · 2493 阅读 · 0 评论 -
Linux - 创建交换分区 swap
购买的 1GB 内存的 Linux 小机器,在编译安装 PHP 的时候内存捉急,只好开启 swap 交换分区来增大内存。[root@VM_139_38_centos php-7.2.12]# cat /proc/swaps Filename Type Size Used Priority[root@VM_139_38_centos php-7.2.12]# dfFilesystem...原创 2018-12-08 11:47:02 · 511 阅读 · 0 评论 -
Linux 下在后台运行进程:nohup,setsid,& 以及 tmux
参考:Linux 技巧:让进程在后台可靠运行的几种方法ssh 登录了远程服务器时,如果在前台运行耗时较长的任务, 当 ssh 掉线或关闭窗口时会导致命令停止运行。hup 与 nohup当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。有两种解决办法让进程忽略 HUP 信号让进程运行在新的会话里,从而成为不属于此终端的子进程noh...原创 2018-11-17 15:42:08 · 903 阅读 · 0 评论 -
Linux 下的分屏利器-tmux安装、原理及使用
完整的 tmux 命令可以参考 这里。Linux 下的分屏利器 - tmux有时候相关操作,开多个终端切来切去的挺麻烦,这时可以在一个终端里分屏。tmux 工具就是分屏用的。安装Ubuntu 用 apt 命令安装apt install tmuxRHEL 或 CentOS 用 yum 命令安装:yum install tmux原理tmux 是 C-S 架构,server 可以在...原创 2018-11-17 14:53:00 · 1900 阅读 · 0 评论 -
Linux 命令详解 - ps
完整文档ps 命令用于显示命令执行瞬间的进程状态(Process Status)。如果想动态查看进程状态可以使用 top 命令。进程的概念进程类型前台进程:由终端初始化,可以通过命令行进行交互。需要由用户启动,不能作为系统功能或服务的一部分自动启动。 后台进程:进程在后台运行,没有连接到终端,无法跟用户交互。 守护进程:特殊的后台进程,在系统启动时启动,并作为服务一直运行。作为...原创 2018-08-21 13:02:44 · 610 阅读 · 0 评论 -
【Linux 应用编程】进程管理 - 进程、线程和程序
基本概念程序和进程的区别程序是平台相关的二进制文件,只占用磁盘空间。编写完程序代码后,编译为可执行的二进制文件即可。进程是运行中的程序,占用 CPU、内存等系统资源。通过 Shell 命令,可以在终端启动进程,例如执行 ls 命令:找到命令对应的二进制文件使用 fork() 函数创建新的进程在新创建的进程中调用 exec 函数组,加载命令对应的二进制文件,并从 main 函数开始执...原创 2019-04-08 22:23:39 · 205 阅读 · 0 评论 -
【Linux 应用编程】进程管理 - 进程间通信IPC之管道 pipe 和 FIFO
IPC(InterProcess Communication,进程间通信)是进程中的重要概念。Linux 进程之间常用的通信方式有:文件:简单,低效,需要代码控制同步管道:使用简单,默认阻塞匿名管道 pipe:只存在于内核缓冲区,只能用于有血缘关系的进程有名管道 FIFO:在文件系统中存在,可用于无血缘关系的进程信号量:使用复杂,但开销小,操作系统本身支持信号量内存映射区 mm...原创 2019-04-14 11:41:16 · 170 阅读 · 0 评论 -
【Linux 应用编程】进程管理 - 进程间通信IPC之共享内存 mmap
IPC(InterProcess Communication,进程间通信)是进程中的重要概念。Linux 进程之间常用的通信方式有:文件:简单,低效,需要代码控制同步管道:使用简单,默认阻塞匿名管道 pipe:只存在于内核缓冲区,只能用于有血缘关系的进程有名管道 FIFO:在文件系统中存在,可用于无血缘关系的进程信号量:使用复杂,但开销小,操作系统本身支持信号量内存映射区 mm...原创 2019-04-14 13:37:15 · 202 阅读 · 0 评论 -
gcc 和 gdb 常用选项
gcc编译步骤预处理,生成 .i 的文档[预处理器 cpp]:cpp test.c -o test.i编译,得到汇编代码 .s [编译器 cc1]:/usr/local/gcc-4.8.1/libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/cc1 test.i汇编,得到目标代码(机器指令).o [汇编器 as]:as test.s -o test.o...原创 2019-06-19 13:31:14 · 1114 阅读 · 0 评论 -
Linux 进程间通信
Linux 进程间通信的方式可以分为三大类:管道信号IPC,又可分为三类共享内存消息队列信号量管道管道是 Linux 内核中的数据结构,类似于队列,管道中的特性如下:数据只能读取一次,读取后消失,不可再次读半双工通信,两端都可以用来写数据,但一端开始写数据的话,另一端只能用来读无数据时,读会阻塞;数据写满时,会写阻塞用过命令行的人,对管道应该不陌生。例如,查看...原创 2019-07-01 23:04:23 · 188 阅读 · 0 评论 -
Linux 中静态库、动态库的创建及使用
异同点静态库:文件名默认为 libXXX.a,就是可重定位目标文件的集合。编译时 gcc 会将静态库中的依赖打包到可执行文件动态库:文件名默认为 libXXX.so,执行时需要动态加载依赖创建并使用静态库创建静态库创建 sub.c 和 sub.h 两个文件,用于创建静态库:int sub(int x, int y) { return x - y;}#ifndef _SUB_...原创 2019-06-30 16:20:23 · 438 阅读 · 0 评论 -
【Linux 网络编程】socket 实现服务器和客户端
IP 地址可以标识网络中的主机,协议类型(TCP或UDP)加端口号可以表示主机上的进程。基本原理文件类型Linux 中有七种类型的文件,这些文件类型可以使用一些基本的函数,例如 read、write:普通文件目录链接文件字符设备块设备管道:pipe匿名管道,fifo有名管道套接字:socket套接字是全双工的,虽然只有一个文件描述符,但是在 Linux 内核中读写操作分别...原创 2019-09-16 11:46:12 · 1183 阅读 · 0 评论 -
【Linux 网络编程】多进程、多线程服务器并发模型
服务器在执行 accept 等待客户端连接时,会阻塞。客户端连接成功后 accept 函数返回,执行后面的代码。如果想要服务器同时为多个客户端服务,有以下几种方式:多进程:每来一个客户端,就开一个进程与其通讯。多线程:跟多进程类似,但每个客户端对应一个单独的线程IO多路复用:借助 select、poll 函数实现多进程服务器多进程模型中,为了避免产生僵尸进程,父进程必须回收子进程资...原创 2019-09-16 17:38:45 · 334 阅读 · 0 评论 -
【Linux 应用编程】IO 多路转接 - select 和 poll
Linux 中,read 和 write 函数默认实现的是阻塞式的 IO。例如:while ((n = read(STDIN_FILENO, buf, BUFSIZ) > 0) { if (write(STDOUT_FILENO, buf, n) != n) { perror("write"); eixt(EXIT_FAILURE); }}如果需要同时从多个描述符读,则不...原创 2019-09-21 18:55:32 · 156 阅读 · 0 评论 -
【Linux 应用编程】IO 多路转接 - epoll
跟 select、poll 的对比epoll 性能更高,Nginx、redis 等流行的软件,都是基于 epoll 实现的。epoll 优点有:监听描述符数量大于 1024只返回准备好的描述符,不需要浪费时间遍历描述符集合基于红黑树实现,高效使用步骤epoll 有 3 个函数:epoll_create 指定 epoll 对应的红黑树的大概节点数,并返回 epoll 描述符ep...原创 2019-09-22 22:37:39 · 393 阅读 · 0 评论 -
Linux 中设置进程通过 systemctl 启动
对于某些脚本或需要启动命令的程序,可以通过创建 xx.service 服务文件来使用 systemctl 控制。例如,对于 docker-compose,其后台启动且忽略输出信息的命令为:$ nohup docker-compose -f docker-compose.yml up &创建 drone.service 服务文件如果要使用 systemctl 来启动进程(...原创 2018-05-30 13:00:56 · 4823 阅读 · 0 评论 -
Linux 后台执行命令
&nohupctrl + zjobsfgbgkill下面的示例统一使用这个每秒打印一次时间的简单脚本:[root@VM_139_74_centos shell]# cat 10s.sh#!/bin/bashfor ((i = 0; i < 10; i++)); do echo $(date) sleep 1done正常执行命令...原创 2018-05-30 12:51:07 · 8156 阅读 · 0 评论 -
Linux 路由表详解及 route 命令详解
Linux 内核的路由表通过 route 命令查看 Linux 内核的路由表:[root@VM_139_74_centos ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gatewa...原创 2018-05-26 23:44:40 · 144206 阅读 · 4 评论 -
Fedora 的截屏功能
写写博客少不了截图,Windows 上使用微信的快捷键 Ctrl+A 截图并且可以随意编辑是挺方便的,开始在 Linux 上还没有找到这样的软件,只找到了不支持编辑的简单截图软件。1. 使用 Screenshot 软件Fedora 26 默认安装了 Screenshot 软件,支持三种截图模式:截取整个屏幕:有多个显示器时,抓取整个屏幕,不仅是当前的显示器。截取当前窗口截取选...原创 2018-04-16 23:29:55 · 2294 阅读 · 0 评论 -
Fedora 26 安装搜狗拼音输入法 sogoupinyin
Fcitx 官方 wiki Fcitx GitHub Arch wiki 上关于 Fcitx 的资料 故障排除可以参考这里 Fedora 中文社区 Fedora 中文社区软件源Fcitx (Flexible Input Method Framework) ──即小企鹅输入法,是一个以 GPL 方式发布的输入法平台,可以安装多种输入法,是 Linux 中常用的中文输入法。Fcitx 内...原创 2018-04-16 23:04:08 · 5236 阅读 · 1 评论 -
CentOS 中使用 yum 命令及 EPEL
CentOS 官方 yum 资料 yum 官网 EPEL 官网 EPEL 清华镜像1. yum 概述yum(Yellow dog Updater,Modified)是所有版本的 CentOS 中使用的默认软件包管理器,用于从 CentOS 官方和第三方仓库中安装和更新软件包。yum 是在 Fedora、RedHat 和 CentOS 中基于 rpm 的软件包管理器,能够从指...原创 2018-03-27 14:27:32 · 5324 阅读 · 1 评论 -
CentOS 7 升级 Linux 内核
升级 CentOS 内核参考资料 1 升级 CentOS 内核参考资料 2 通过 /proc 虚拟文件系统读取或配置内核 Linux 内核官网 CentOS 官网1. 关于 Linux 内核Linux 内核分两种:官方内核(通常是内核开发人员用)和各大 Linux 发行版内核(一般用户常用)。1.1 官方内核在使用 Docker 时,发现其对 Linux 内核版本的最低要求...原创 2018-02-28 16:52:37 · 72176 阅读 · 13 评论 -
Linux 安全2 - 用证书登录(密钥登录)替换密码登录(基于 XShell)
证书登录分3步实现:生成密钥(公钥与私钥,可以用 ssh 客户端生成,也可以用专用软件生成),公钥放在服务器端,私钥放在客户端。为了安全起见,私钥最好设置密码;放置公钥(Public Key)到服务器的 ~/.ssh/authorized_keys 文件中;配置 ssh 客户端(XShell 等)使用证书登录。注意:记得保存好密钥,如果为密钥设置了密码,要一并保存好。 深入的知识原创 2018-01-22 14:17:50 · 2685 阅读 · 0 评论 -
CentOS7-搭建LNMP环境
1.安装Nginx1.通过yum install安装yum install nginx 配置防火墙 配置防火墙开启80端口,不开启的话,有时防火墙会不让外网访问80端口我们就无法访问nginx配置的网站了。2.修改防火墙配置:iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT原创 2017-05-20 17:03:37 · 489 阅读 · 0 评论 -
Linux安全1-用户密码被暴力破解
本人所用Linux为CentOS7,本文写于2017-05-16,请注意版本区别和时效性。1.缘由今天连接服务器时,发现有接近3万次的连接失败记录。抓紧查了查怎么回事,原来是被攻击了,可能是僵尸网络干的。大神们建议,root密码要保证足够复杂,如果用证书登录替换密码登录,更能保证安全。 但是事情不能就这么过了,得刨根问底。2.查看Linux日志1.首先要做的,先分析明白我们经历了什么。而这一切原创 2017-05-16 16:56:55 · 15883 阅读 · 0 评论 -
Linux 常用命令
Linux 常用命令 Linux 命令中文资料Linux 命令分为两类:内建命令:这些命令在内核中实现或 shell 自带,如 cd、pwd外部命令:独立的可执行文件,文件名即命令名,如 ls、mv、ps,通过 shell 内置的环境变量 $PATH 指定的路径查找,可用 which 查看命令的路径,用 type 可以查看命令的类型(type cd)。系统管理ps...原创 2016-12-22 17:37:12 · 774 阅读 · 0 评论 -
Linux shell 入门
shell 是弱类型语言,这跟 PHP 等弱类型脚本语言类似。 参考资料 在线编辑器1. 语法shell 以 # 开头的行就是注释,只有单行注释,没有多行注释,只能每一行加一个 # 号。1.1 变量shell 中使用 echo 打印内容,默认输出到 STDOUT(即终端窗口)中。用户自定义变量定义变量定义变量时,变量名不加美元符号($)。注意,变量名和等号之...原创 2018-04-12 23:20:13 · 184 阅读 · 0 评论 -
CentOS7 - 安装 VirtualBox
参考资料 最新的可用安装包可以从这里下载VirtualBox 是 x86 硬件虚拟化产品,功能上与 VMware Server、KVM、及 Xen 类似,但是 VirtualBox 不修改 Linux 内核,开源免费,容易安装及使用。1. 安装安装 EPEL参考 这里。 CentOS 用户可以直接通过 yum install epel-release 安装并启用 EPEL ...原创 2018-04-18 23:36:08 · 584 阅读 · 0 评论 -
Linux 初始化系统(init)- systemd
wikipedia 浅析 Linux 初始化 init 系统 systemd 中文手册 fedoraproject - systemd1. Systemd 简介Systemd 是 Linux 系统的初始化系统。提高启动速度通过并行启动和减少启动进程,且采用了 socket / D-Bus activation 激活等技术,实现了较快的启动速度。管理进程的生命周期i...原创 2018-04-30 23:33:02 · 422 阅读 · 0 评论 -
Linux 文件和目录的权限设置 - umask(默认权限),chmod(改变权限)
1. chmod 改变已有目录或文件的权限chmod 设置已有目录或文件的权限。可以为指定范围的用户添加或删除权限。权限范围的表示法如下:u:User,即文件或目录的拥有者;g:Group,即文件或目录的所属群组;o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;a:All,即全部的用户,包含拥有者,所属群组以及其他用户;权限设置如下:r:...原创 2018-04-28 21:22:36 · 9029 阅读 · 0 评论 -
curl 和 wget 命令
1. curlcurl 支持 HTTP、HTTPS、FTP 等协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、User-Agent、限速、文件大小、进度条等特征。1.1 选项 - - -A 或 --user-agent <string> 设置用户代理 -b 或 --cookie <name=string/f...原创 2018-05-06 23:51:03 · 579 阅读 · 0 评论 -
curl 中关于 CURLINFO_HEADER_SIZE 的 BUG 定位及修复
curl 官方下载页面安装了最新版本的 PHP7,还是碰到了 BUG。这次是 curl 的问题,CentOS7 默认安装的 curl 版本太低了,需要升级为最新版来解决这个问题。1. 问题描述对接了一个接口,用来下载 PDF 文件。使用 curl 下载后,文件老是报错无法打开。接口提供方直接返回的 PDF 二进制文件流,而没有放入某个字段中或经过 base64 编码。负责下载的部分...原创 2018-05-12 16:54:49 · 1521 阅读 · 0 评论 -
FTP 服务器搭建(基于 CentOS 7)
参考资料: 檔案伺服器之三: FTP 伺服器 用 vsftpd 配置FTP服务器 vsftpd 的所有选项注意,如果要所有人同时编辑 FTP 上的所有文件,可以将 vsftpd.conf 配置文件中的 local_umask 选项设置为 002,并且在创建用户时通过 -g ftp 将所有的 FTP 用户加入同一个用户组。1. 安装 ftp 服务端软件yum install v...原创 2018-04-27 19:40:13 · 357 阅读 · 0 评论 -
Linux 用户和用户组管理
1. 用户相关命令1.1 useradd:添加用户语法:useradd [选项] 用户名选项:-c <comment>:备注。备注会保存在 passwd 的备注栏中;-d <家目录>:指定用户登陆后进入的目录;-D:变更预设值;-e<有效期限>:指定帐号的有效期限;-f<缓冲天数>:指定在密码过期后多少天即关闭...原创 2018-04-27 19:23:44 · 326 阅读 · 0 评论 -
Vi/Vim
1. 概述vi 编辑器有三种模式:正常模式:查看文本,可转换到输入模式或命令模式,在这两个模式下按 Esc 键可以回到正常模式。输入模式:正常模式下,使用 i、a 等进入输入模式,可以修改文本内容。详解: i:在当前光标处进入输入模式,A:将光标移动至当前行行末并进入输入模式,o:在当前行的下面插入新行,光标移动至新行并进入输入模式,O:在当前行的上面插入新行,光标移动至新行并...原创 2018-05-05 12:17:26 · 378 阅读 · 0 评论