linux
chenyulancn
python、golang、c/c++、linux、虚拟化、大数据
展开
-
日志切割方法小结 [Logrotate、python、shell脚本实现 ]
日志 轮转转载 2023-01-07 10:27:48 · 1453 阅读 · 1 评论 -
CentOS7: kernel:nf_conntrack:expactation table full 引发的问题
CentOS7 kernel:nf_conntrack:expactation table full原创 2022-08-01 17:23:44 · 644 阅读 · 0 评论 -
keepalived 参数中文说明
keepalived 配置说明转载 2022-07-19 14:01:54 · 683 阅读 · 0 评论 -
CentOS7 下crontab 定时任务不执行问题
crontab 程序运行正常情况下,定时任务无法执行问题原创 2022-06-30 14:31:47 · 2221 阅读 · 0 评论 -
Supervisor 配置详解
一、Supervisor 是什么Supervisor是一款由Python语言编写的管理进程的工具。为什么要用supervisor呢?因为,相对于我们Linux传统的进程管理方式来说,它有很多的优势,我们可以编写 Listener 监听器,用来监控 supervisor 所管理子进程的状态,当子进程异常退出时,楼主写的这个listener将会触发报警。二、具体特点说明1. 简单为啥简单呢?因为咱们通常管理linux进程的时候,一般来说都需要自己编写一个能够实现进程start/stop/rest转载 2022-04-05 11:50:42 · 8093 阅读 · 0 评论 -
shell-的特殊变量-进程状态变量$$ $? $_详解
一:shell的特殊变量-进程状态变量详解 1. 进程状态变量$$ 获取当前shell的进程号(pid)$! 执行上一个指令的pid,上一个后台运行进程的进程号$? 获取执行上一个指令的返回值(0为成功,非零为失败)$_ 在此之前执行的命令(上一个命令)或脚本的最后一个参数 举例(通过脚本举例) 范例:举例$$[root@1-241 scripts]# echo $$76037[root@1-241 scripts]# ps -ef |grep 760...转载 2022-04-04 19:17:09 · 450 阅读 · 0 评论 -
VIM基本配置
~/.vimrc"显示行号set nu"启动时隐去援助提示set shortmess=atI"语法高亮syntax on"不需要备份set nobackup"没有保存或文件只读时弹出确认set confirm"鼠标可用set mouse=a"tab缩进set tabstop=4 "tab键缩进距离set shiftwidth=4 "自动缩进距离set expandtab "tab变为空格set smarttab "转载 2022-03-21 08:31:48 · 440 阅读 · 0 评论 -
高版本 docker-compose 安装
指定版本 docker-compose 安装curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose你可以通过修改URL中的版本,可以自定义您的需要的版本版本信息--https://g...转载 2022-03-20 21:32:19 · 401 阅读 · 0 评论 -
Linux 使用strace命令查找进程卡死原因
最近遇到进程卡死的情况,但是自己调试的过程中并不一定能复现,都是需要运行一段时间某些条件下才会触发,对于这种运行着不能破坏现场的情况,我们可以使用gdb -p和strace -p来跟踪。1. ps auxf 查看我们的进程执行到了哪一步:可以看到执行到了dockerexec -i 178.20.1.229_0115034556 ls然后就卡死了2. strace 查看执行这个操作死在哪个系统回调:这里可以看到死在了系统回调read这里,描述符19的具体意义我们可以进入...转载 2022-03-17 11:38:37 · 1764 阅读 · 0 评论 -
C++11 删除 字符串中的空格
#include <algorithm> #include <string>#include <iostream> using namespace std;int main(){ auto isSpace = [](const unsigned char c) { return std::isspace(c); }; string msg("hh hh hh pp"); msg.erase(remove_if(msg.begin.原创 2022-03-11 11:18:53 · 1386 阅读 · 0 评论 -
检测内存泄露、多线程gdb调试(core)、内核态用户态的通信
快速检测内存泄露C/C++内存泄漏及检测1、win下的内存泄露检测方法:_CrtDumpMemoryLeaks通过包括 crtdbg.h,将 malloc 和 free 函数映射到它们的调试版本,即 _malloc_dbg 和 _free_dbg,这两个函数将跟踪内存分配和释放。 此映射只在调试版本(在其中定义了_DEBUG)中发生。 发布版本使用普通的 malloc 和 free 函数。在程序退出前调用:_CrtDumpMemoryLeaks();#define _CRTDBG_MAP转载 2021-12-20 22:16:21 · 760 阅读 · 0 评论 -
源码编译redisjson
RedisJSON近期比较火热,蹭一下热度,源码编译一个librejson.so,加载在redis-server中尝试使用一下。步骤如下:1.下载RedisJSON源码,强烈建议下载 1.2版本,高版本会遇到编译问题不好解决2. 安装clang,yum install clang3.cargo build --release编译成功会在RedisJSON 源码文件夹内的 target文件下生成librejson.so文件。4. redis-server 加载该模块两种方式:...原创 2021-12-16 18:59:39 · 1945 阅读 · 0 评论 -
vim/vi中 set 用法设置及查看不可见字符其他方法
vim/vi中 set 用法设置vi set用法from google search一、常用收集如下:(vi set)set autoindent在插入模式下,对每行按与上行同样的标准进行缩进,与shiftwidth选项结合使用set list把制表符显示为^I ,用$标示行尾(使用list分辨尾部的字符是tab还是空格)set number显示行号set readonly文件只读,除非使用!可写set shiftwidth反向制表符中的空格数目set show...转载 2021-08-19 22:33:22 · 2727 阅读 · 0 评论 -
Linux 错误: $‘\r‘: command not found
Question前段时间写脚本出现了$'\r': command not found问题。Solution其实log报错已经非常明确了,是linux无法解析$'\r'。这其实是windows与linux系统的差异导致的。因为linux上的换行符为\n,而windows上的换行符为\r\n。所以脚本到linux上就无法解析了。通常的处理办法主要有2种:处理办法1 set ff=unixvi hello.sh ### Esc进入命令行运行模式### : set ff=unix处转载 2021-07-21 13:04:20 · 554 阅读 · 0 评论 -
cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd 两种解决方法
centos8(或者 centos8 aach64架构) 系统下 yum或dnf 默认安装的 cmake-3.18.2-11.el8版本,安装后无法使用,出现:cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd 错误。该错误解决办法两种:第一种: 安装低版本或者高版本的 cmake1.卸载cmake程序yum remove cmake 或 rpm -e cmake2.重新安...原创 2021-07-07 09:58:29 · 12091 阅读 · 5 评论 -
c++数组/vector/map 遍历比较简便的办法
python,golang用时间长了,变懒了,再用c++ 遍历数组等操作,实在觉得费时费力. 经搜索总结验证,罗列下,c++(>=11)遍历数组/vector的方法:遍历(修改)数组: int fi[5] = {1, 1, 2, 3, 5}; for (auto &i : fi){ // 加 & 可以修改数组值,否则不能修改 i*=2; cout<< i << endl; }遍历(修改)ve原创 2020-08-14 16:18:56 · 536 阅读 · 0 评论 -
执行shell脚本进入指定目录
在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: #!/bin/shcd /home/user/Downloads 在shell环境下通过./chdir.sh执行这段脚本是无法进入Downloads目录的; 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父s...转载 2020-01-16 08:47:07 · 1563 阅读 · 0 评论 -
PAM 的应用开发和内部实现源码分析
本文主要通过对Linux PAM源代码进行分析,阐述了PAM的内部实现机制和怎样在应用程序中应用PAM进行认证,以及怎样开发PAM服务模块。1 引言身份认证是操作系统安全的重要机制之一,系统通过认证机制核查用户的身份证明,并作为用户进入系统的判定条件,是防止恶意用户进入系统的第一道门槛。近年来认证理论和技术得到了迅速发展,产生了各种认证机制,如口令机制,RSA, DCE, kerberos转载 2012-09-27 08:10:19 · 5274 阅读 · 1 评论 -
PAM 認 證 模 組
(linux 参考网址:http://www.suse.url.tw/sles10/)索引: 20.1 認識 PAM 20.1.1PAM 的簡介 20.1.2PAM 的相關檔案20.2 PAM 模組設定檔 20.2.1PAM 模組設定檔的設定格式 20.2.2PAM 認證模組的功能转载 2012-09-27 08:14:46 · 1178 阅读 · 0 评论 -
Linux下 fcntl 函数用法说明
功能描述:根据文件描述词来操作文件的特性。 文件控制函数 fcntl -- file controlLIBRARY Standard C Library (libc, -lc)SYNOPSIS #include ; int fcntl(int fd, int cmd); in转载 2012-09-27 08:45:32 · 601 阅读 · 0 评论 -
解决gcc 编译时报错“undefined reference to ‘main‘“ 问题
出现此错误:/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/../../../crt1.o(.text+0x18): In function `_start ':: undefined reference to `main ' collect2: ld returned 1 exit status原创 2012-09-28 08:59:04 · 24836 阅读 · 4 评论 -
python程序 添加具有root权限的 linux 用户
#! /usr/bin/env python# This Python file uses the following encoding: utf-8''''Created on 2012-9-28@author: zero'''import os,crypt,sysif len(sys.argv)<3: print("usage: python %s test11 test转载 2012-09-28 10:53:40 · 3397 阅读 · 0 评论 -
Linux 用户认证(crypt方式)
最近做的一些开发和Linux用户有密切的关系,以前没有做过相关的学习,仅仅停留在使用shell下的useradd, passwd命令,但对用户的认证及密码的管理基本没有了解。在这里做个小结。1. 第一个重要文件/etc/passwd例:/etc/passwd中的一行rwan:x:1000:1000:Robin:/home/rwan:/bin/bash包含七个字段,各个字段间用冒转载 2012-09-28 12:51:13 · 1823 阅读 · 0 评论 -
linux的PAM认证和shadow文件中密码的加密方式
PAM全称是:Pluggable Authentication Modules,中文叫“可插入认证模块”。它是一种统一的认证方案。PAM 让您能随时改变您的认证方法以及需求,并且不需要重新编译任何代码就封装了所有本地认证方法。具体见 PAM 网站。对于 PAM 您只需要做:对您的密码采用不同于 DES 的加密方式(让它们面对暴力解码(brute-force decode)时转载 2012-09-28 12:43:40 · 2227 阅读 · 0 评论 -
/etc/passwd & /etc/shadow 详解
1,passwd文件passwd文件存放在/etc目录下。这个文件存放着所有用户帐号的信息,包括用户名和密码,因此,它对系统来说是至关重要的。可以使用如下命令查看该文件:cat/etc/passwdPasswd文件由许多条记录组成,每条记录占一行,记录了一个用户帐号的所有信息。每条记录由7个字段组成,字段间用冒号“:”隔开,其格式如下:username:password:User转载 2012-09-28 11:06:49 · 954 阅读 · 0 评论 -
python 进行linux 用户验证
用python 程序进行linux 用户验证,需要具备两个人条件:1、获取待验证用户相应密码加密用的 salt(salt可理解为加密密钥) salt在 /etc/shadow 文件中(详情请参见),以用户zero为例:zero:$6$F3MzHURV$1GcuHKgSDiZzfjAgozFqRImfbu7xEjRSj28YOa5vf.V9hwVHaNfiotL/i9lmzEd4huJ原创 2012-09-28 12:30:30 · 2757 阅读 · 0 评论 -
Linux的用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目转载 2012-09-28 13:23:31 · 798 阅读 · 0 评论 -
Ubuntu12.04 server 开启root用户图形界面直接登录
ubuntu12.04 server 版安装后没有图形界面,需要自己安装,具体安装在这不做赘述,以我的机器为例---我安装的是gnome桌面(简版的),但想用root开发python程序访问只有root权限的用户才能操作的文件时 比较麻烦,所以想用root身份直接登录到然后创建文件、运行等。 默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后原创 2012-09-29 09:38:22 · 2637 阅读 · 0 评论 -
userdel删除用户时候提示:userdel: user xx is currently logged in
创建新用户后,想删除,使用 userdel xx 删除,结果出现userdel: user xx is currently logged in 的提示,其结果是无法删除,可以使用 sudo userdel -r -f xx 加两个参数,给他强制删除,之后可能出现警告:userdel: warning: can't remove /var/mail/wxt: No su原创 2012-09-29 14:13:41 · 21333 阅读 · 0 评论 -
在C/python中执行linux命令并得到返回值以及输出
一般来说,用shell的方便之处在于,能够直接调用linux系统命令,方便的得到结果。但是shell scprit的约束重重(这里不再讲了)。下面说一下在C和python中如何调用linux命令、得到返回值并得到输出1. python,使用os库/commands库方法1)使用commands.getstatusoutput方法,这是一个神奇的方法,能够直接得到返回值以及命令输出。官网转载 2012-09-29 14:27:28 · 9284 阅读 · 0 评论 -
Linux 用户认证---PAM验证机制
一.PAM简介Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写和)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制. 这种方式下,就算升级本地认证机制,也不用修改程序. PAM使用配置文件/etc/pam.conf(或/etc/pam.d/下的文件),来管理对程序的认证方式.应用程转载 2012-09-24 17:21:19 · 2624 阅读 · 0 评论 -
Linux 2.6 中的文件锁
在多任务操作系统环境中,如果一个进程尝试对正在被其他进程读取的文件进行写操作,可能会导致正在进行读操作的进程读取到一些被破坏或者不完整的数据;如果两个进程并发对同一个文件进行写操作,可能会导致该文件遭到破坏。因此,为了避免发生这种问题,必须要采用某种机制来解决多个进程并发访问同一个文件时所面临的同步问题,由此而产生了文件加锁方面的技术。早期的 UNIX 系统只支持对整个文件进行加锁,因此无法运转载 2012-09-21 15:43:13 · 873 阅读 · 0 评论 -
Ubuntu忘记root密码解决办法
Linux系统中,用户的密码文件是存放在/etc/shadow文件中的,每一个用户一行记录,密码经过了加密,但是用sudo还是可以对这个文本进行编辑的。 于是我就想把当前用户的密码加密后的那串字符替换root的密码串,这时就可以用当前系统的密码登录root了。经过测试,这个方法在9.0.4以后的桌面版本是不可行的。于是上无忧论坛请教这方面朋友,才知道ubuntu桌面版安装完默认是不启用ro转载 2012-11-05 13:02:07 · 409 阅读 · 0 评论 -
ubuntu备份与恢复
Ubuntu如何备份和恢复系统http://wsfei.iteye.com/blog/1100534在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历。如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供的软件环境,在这里备份或者恢复Windows系统。Norton Ghost是备份Wi转载 2012-11-05 14:01:12 · 502 阅读 · 0 评论 -
Linux开机自动运行脚本程序
[摘要] 在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志文件追加一条记录...[关键字] Linux开机自动运行脚本程序 测试环境:Fedora7,管理员:root,普通用户:test1 实现目标:在Linux启动时,自动运行位于普通用户test1根目录下的脚本程序test.py,该程序会在每次执行转载 2012-11-06 14:58:11 · 1396 阅读 · 0 评论 -
Upstart与ubuntu启动过程,简单原理
ubuntu从6.10开始逐步用upstart代替原来的sysinit,进行服务进程的管理。也正是从6.10开始,ubuntu的启动过程开始变得有点“变幻莫测”。也没办法,这是正在开发中的upstart不可避免的。为了对原有的init实现向后兼容,upstart可以说是在表象上保留了大部分原来init的特性,因而目前linux初始化进程名仍然叫init,而改变的核心,乃是Event机制。理解并讲清转载 2012-11-06 16:26:41 · 499 阅读 · 0 评论 -
Linux启动过程综述
Bootloader在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引 导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘 驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导转载 2012-11-06 16:33:13 · 432 阅读 · 0 评论 -
PYTHON的程序在LINUX后台运行
PYTHON的程序在LINUX后台运行1.nohup 命令nohup nohup 命令 用途:LINUX命令用法,不挂断地运行命令。 语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。转载 2012-11-06 14:45:58 · 5731 阅读 · 0 评论 -
ubuntu设置IBus开机启动
Go to the menu:System >> Preferences >> Startup ApplicationsClick the button: AddName: IBus daemonCommand: /usr/bin/ibus-daemon -dComment: start IBus daemon when Gnome starts转载 2012-11-07 14:45:50 · 583 阅读 · 0 评论 -
python调用pam模块进行linux用户验证
# (c) 2007 Chris AtLee # Licensed under the MIT license:# http://www.opensource.org/licenses/mit-license.php"""PAM module for pythonProvides an authenticate function that will allow the caller t转载 2012-11-06 14:41:23 · 3509 阅读 · 0 评论