Linux基础
阿基米东
本科毕业于国内某知名双非理工大学,当过校队球员,后自学编程,专注于嵌入式软件开发十余年,在物联网、机器人、汽车等领域拥有实战经验,也是多个开源项目的贡献者,对 Web 前后端、AI 技术略知一二。立志成为一名杰出的开源创客,让世界因我而变得更美好!
展开
-
Convert 命令与图像处理
Linux 中可以用 convert 命令对图像进行转换,比如图像的大小和格式等。convert 命令在 ImageMagick 内,因此只需要安装 ImageMagick 即可。sudo apt install imagemagick安装完成后,执行如下命令确认 convert 是否安装成功。convert --version缩放图片大小Convert 的 resize 子命令应该是在 ImageMagick 中使用较多的命令,它实现了图片任意大小的缩放,唯一需要掌握的就是如何使用它的一些原创 2020-11-11 16:32:35 · 2680 阅读 · 0 评论 -
sudo 命令能为你做些什么
对运维人员来说,Linux 系统中有一个很重要的命令 —— sudo!可能你早就已经猜到了,它的字面意思是“超级用户才能做!”(super user do!),可以说 sudo 在 Linux 中是一个统管一切的命令。相信很多 Linux 用户都曾有过这样的经历:在终端中试着运行某个命令,结果却遇到“拒绝访问”T_T …… 那么,很多时候,sudo 就是你所需要的命令! Linux 系统不是已原创 2017-08-04 19:46:00 · 4077 阅读 · 0 评论 -
一个灵活的程序应该是可配置的
这段时间在公司充当救火员的角色,拯救了一个快要腐烂的项目。其中做的一个工作就是将其变成可配置的,这样可以增加程序的灵活性,如果想改变程序的行为,只需修改参数即可,而不是重新编译。首先我们需要把程序中可变的部分抽离出来,程序本身只处理业务逻辑,实现配置参数与功能代码的解耦合。在 Linux 环境编程中,通常有两种做法:通过配置文件与程序进行交互通过命令行选项参数进行交互配置文件的格式可...原创 2020-03-14 12:56:37 · 1090 阅读 · 0 评论 -
遇到陌生的 Linux 命令怎么办
1、whatiswhatis 命令用于描述一个命令执行什么功能。whatis <cmd>示例:$ whatis bashbash (1) - GNU Bourne-Again SHell2、whereiswhereis 命令用于查找二进制文件、源文件和 man 手册页的路径。whereis <cmd>示例:$ whereis...原创 2019-11-18 20:17:12 · 556 阅读 · 0 评论 -
万能 Makefile 模板
在 Linux 编程时,对于很多小工程来说,很多时候似乎没有必要用 autoconf 和 automake 工具来生成 Makefile,反而自己写一个 Makefile 更省事。那么这里给大家提供一个简单的 Makefile 模板,根据需要作相应修改,可以适用于很多小项目。CC=gccSRCS=$(wildcard *.c */*.c)OBJS=$(patsubst %.c, %.o, $(S原创 2017-08-06 23:54:49 · 5682 阅读 · 5 评论 -
VMware上使用Ubuntu的问题集合
问题1:在VMware虚拟机上安装完Ubuntu12.04(64位),显示登录界面,输入密码后一直处于黑屏状态。 解决:在虚拟机设置中,找到“显示器”一栏,把“加速3D图形”的选项去掉,重启即可进入图形界面。如果不行,则可以按 Ctrl + Alt + F1 进入命令行登录,再定位问题。问题2:由于关闭虚拟机异常,导致出现打开虚拟机提示:锁定文件失败,开启模块 Snapshot 的操作失败,未能启原创 2017-02-15 17:09:51 · 1503 阅读 · 0 评论 -
Linux系统中添加库文件路径的方法
库文件在链接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。但是,对于处于默认库搜索路径之外的库,就需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:在环境变量 LD原创 2017-02-23 16:44:13 · 43266 阅读 · 1 评论 -
Ubuntu12.04使用apt-get出错——更新软件源
本来打算在Ubuntu上用apt-get安装vsftpd(very secure ftp daemon,ftp服务器),于是输入如下命令:# apt-get install vsftpd 但是出现如下提示:Reading package lists... DoneBuilding dependency tree Reading state information... DoneP原创 2017-01-19 15:09:19 · 5643 阅读 · 0 评论 -
Ubuntu 如何离线安装软件包
我们知道,在 Ubuntu 系统上安装软件很方便,使用 sudo apt-get install xxx 即可,但是如果在不能连接互联网的情况下,如何安装或升级软件呢?这里给大家介绍一种使用 dpkg 工具完成软件安装或升级的方法。 首先,第一步,你得知道你想安装软件的名字,然后根据相应平台下载相应版本的 deb 包。可以在 http://packages.ubuntu.com/ 或者 htt原创 2016-08-11 15:27:25 · 29163 阅读 · 0 评论 -
Linux下修改MTU值
本文大部分转载自:http://www.361way.com/linux-mtu-jumbo-frames/4055.html一、jumbo frames 相关1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bytes大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;转载 2016-11-18 16:32:31 · 19467 阅读 · 3 评论 -
Linux网络命令——ifconfig、ifup、ifdown
ifconfig、ifup、ifdown 概述 这三个命令的用途都是启动网络接口,不过,ifup 与 ifdown 仅就 /etc/sysconfig/network- scripts 内的 ifcfg-ethx(x为数字)进行启动或关闭的操作,并不能直接修改网络参数,除非手动调整 ifcfg-ethx 文件才行。至于 ifconfig 则可以直接手动给予某个接口 IP 或调整其网络参数。下面我们原创 2016-11-18 13:26:40 · 64956 阅读 · 2 评论 -
关于Ubuntu开机启动菜单grub2(选择内核、删除内核、调整内核启动顺序)
在早期的Ubuntu中,使用Grub作为系统的启动引导程序,想修改系统启动项非常简单,只要打开系统菜单设定文件 /boot/grub/menu.lst,修改该文件中的内容即可,但是到了Grub2,可就不能采用这种方式修改系统启动项了。Grub2(GRand Unified Bootloader, version 2)是Grub的第二版。其对Grub的接口进行了完整的重写,基于PUPA项目的研究转载 2015-03-18 00:07:27 · 36068 阅读 · 0 评论 -
嵌入式 Linux 的分类
由于 Linux 所具备的开源、稳定、高效、易裁剪、硬件支持广泛等优点,使得它在嵌入式系统领域近几年内迅速崛起。目前嵌入式 Linux 系统开发已经开辟了很大的市场,同时也开发出很多成型的产品,这些产品主要分如下三类:专门为 Linux 的嵌入式方向定做的。如何让 Linux 更小、更容易嵌入到对体积、功能、性能等指标要求更高的硬件中去是这些产品的开发方向。专门为 Linux 的实时特性设计的产原创 2017-03-05 18:16:35 · 3531 阅读 · 1 评论 -
每个Linux开发者都应该知道的一些知识
如何学习Linux 作为现代操作系统的代表之一,Linux操作系统非常复杂,内部有多得令人眼花缭乱的各种组件在同步运行和相互通信。对于初学者来说,我认为理解操作系统工作原理最好的方法是利用抽象的思维去理解,也就是说,你可以暂时忽略大部分细节。就像坐车一样,通常你不会去在意车内固定发动机的装配螺栓,也不会关心你走的路是谁修筑的。如果你是一名乘客,可能只会关心如何打开或关闭车门、如何系好安全带以及车要原创 2017-07-02 23:55:27 · 2635 阅读 · 0 评论 -
Ubuntu 搭建强大的 IDE —— Vim + Vundle + 插件(上)
本文描述如何在 Ubuntu 环境中利用插件管理工具 Vundle 搭建一个 Vim 开发环境,从而提高在 Linux 下使用 Vim 进行编程的效率。安装 Vim 在 Ubuntu 上安装 Vim 很简单,在终端敲入如下命令即可:$ sudo apt-get install vim 在 Ubuntu 14.04 以上版本执行上述命令安装的 Vim 是 7.4+ 版本,但如果你和我一样使用 Ub原创 2017-08-05 19:40:00 · 43328 阅读 · 3 评论 -
Ubuntu 搭建强大的 IDE —— Vim + Vundle + 插件(下)
在上一节(http://blog.csdn.net/lu_embedded/article/details/76732965)我们已经通过 Vundle 下载、安装了一些插件,这些插件有一些可以直接用、有一些需要配置、有一些则需要编译,下面我们一一来看一下常用的一些插件应该怎样用起来吧。 首先要讲的是 YouCompleteMe,它应该是最难安装的一个插件了。vundle 已经帮我们做了一部分工作原创 2017-08-06 00:33:31 · 8885 阅读 · 0 评论 -
你知道 GNU Binutils 吗?
概述 从事 Linux 开发的朋友们都不可避免地用到一些工具,比如 objcopy、nm、objdump、readelf 等等。其实这一系列的工具,就是所谓的 Binutils,当然 GNU 就表示它们都是可以自由地使用的 GNU 软件。 GNU Binutils,是 GNU Binary Utilities 的简写,一般简称为 Binutils。中文可以翻译为 GNU 的二进制工具集。显然原创 2017-10-11 16:25:43 · 7010 阅读 · 2 评论 -
阿里云服务器ssh经常掉线的解决办法
方法一:使用 SecureCRT 连接(1)选择“Global Options”(选择“Session Options”也可以);(2)选择“Default Session”,点击“Edit Default Settings”;(3)修改,勾选“Send Protocol NO-OP”,设置时间,比如每 120 秒。方法二:修改云服务器 ssh 配置文件(1)打开配置文件;# vim /etc/ss原创 2017-12-22 09:56:13 · 9610 阅读 · 0 评论 -
Linux 下如何转换文件编码格式
首先我们来看看在 Linux 系统中如何查看文件的编码格式,可以在 vim 中使用如下命令查看::set fileencoding输出可能是这样fileencoding=utf-8也可以使用 file 和 identify 命令查看。然后使用 iconv 进行编码格式的转换,比如将一个 utf-8 编码的文件转换成 GBK 编码,命令如下:$ iconv -f UT...原创 2018-03-23 20:20:50 · 14914 阅读 · 0 评论 -
Shell编程——极简教程
Shell的基础在 Linux 下,我们通常会出于以下原因或优点而使用 Shell 脚本:Shell 脚本在处理自动循环或大的任务方面可节省大量的时间,且功能强大;创建一个脚本,在使用一系列系统命令的同时,可以使用变量、条件、算术和循环快速创建脚本以完成相应的工作(这可比在命令行下一个个敲入要节省大量的时间呢);Shell脚本可以在行命令中接收信息,并使用它作为另一个命令的输入。...原创 2018-04-08 13:53:17 · 2765 阅读 · 0 评论 -
开启终身学习之旅
Linux公社(LinuxIDC.com)于2006年9月25日注册并开通网站,Linux现在已经成为一种广受关注和支持的一种操作系统,IDC是互联网数据中心,LinuxIDC就是关于Linux的数据中心。Linux公社是专业的Linux系统门户网站,实时发布最新Linux资讯,包括Linux、Ubuntu、Fedora、RedHat、红旗Linux、Linux教程、Linux认证、SUSE ...原创 2016-04-27 21:42:37 · 4893 阅读 · 2 评论 -
ARM Linux RTC 时间的读取与设置
问题描述 RTC 芯片采用 PCF8563T,Linux 系统使用 date 设置时间后用 hwclock -w 同步到 RTC,一段时间后 Linux 系统时间与本地时间相差 8 个小时。分析问题 直觉告诉我们这是时区造成的,要么是系统的时区配置不对,要么是 RTC 时间的读写不对。时区配置主要是两个文件:/etc/localtime 和 /etc/timezone,内容...原创 2018-06-06 12:09:54 · 9716 阅读 · 0 评论 -
关于export DISPLAY=:0.0
DISPLAY 是 Linux/Unix 类操作系统中的环境变量,用来设置将图形显示到何处。 也许你会问,图形界面不就显示到设备的屏幕上吗,为什么还要指定?这个问题就涉及到 X Window,需要知道的是,X Window图形用户接口是一种计算机软件系统和网络协议。 DISPLAY 环境变量格式如下 host:NumA.NumB,host 指 Xserver 所在的主机主机名或原创 2016-10-27 14:28:21 · 26277 阅读 · 1 评论 -
关于Linux的runlevel
Linux启动之旅:http://www.cnblogs.com/bangerlee/archive/2012/03/11/2388275.html Linux系统关机与重新引导流程简介:http://www.cnblogs.com/bangerlee/archive/2012/05/03/2482006.html Linux系统关机与重新:http://blog.csdn.net/wangxw原创 2016-11-04 19:14:55 · 1313 阅读 · 0 评论 -
Ubuntu虚拟机识别不了SD卡的解决办法
问题背景:在Win7上的安装的VMware9,运行Ubuntu12.04,SD卡通过读卡器连接到电脑(ThinkPad E550c)上,使用命令“sudo fdisk -l”列出磁盘信息,没有任何关于USB的信息。经过排查,发现是因为VMware没有识别出读卡器。所以我将VMware9换成了VMware10,然后就可以顺利识别到SD卡了。这里安装的是中文版VMware10(因为有现成的呀,不用下载)原创 2016-04-27 00:36:32 · 28366 阅读 · 3 评论 -
Linux下如何卸载软件(Debian系)
说明:此方法适用于Debian、Ubuntu等带apt工具的操作系统。步骤:1、首先我们需要知道将要卸载的软件名称,比如我现在打算卸载tightvncserver,但是如果你不确定名称,没关系,可以用Tab键自动补全来确定。2、打开终端/命令行准备输入命令。sudo apt-get autoremove --purge命令&参数解释: sudo——获取 root 权限 apt-get——执行安装原创 2016-02-02 03:01:41 · 31194 阅读 · 0 评论 -
Linux查看磁盘剩余空间
使用命令:df -hl 结果如下:osmc@osmc:~/workspace/dispmanx_vnc-master$ df -hl文件系统 容量 已用 可用 已用% 挂载点devtmpfs 362M 0 362M 0% /devtmpfs 367M 5.0M 362M 2% /run/dev/mmcblk0p2原创 2016-02-02 02:36:30 · 9900 阅读 · 0 评论 -
SSH连接出错问题收集
问题1: SSH登陆错误 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)[root@myUbuntu ~]# ssh root@192.168.100.106@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIF原创 2016-02-02 01:57:02 · 4107 阅读 · 0 评论 -
vim用法详解
首先安装vim编辑器$sudo apt-get install vim vim-gnome vim-tiny vim-gtk vim-nox在用户目录下建立自己的配置文件#cd ~touch一个名为.vimrc文件#touch .vimrc#vi .vimrc输入以下配置:set nocompatible 不使用vi默认键盘布局set number转载 2016-02-01 18:52:15 · 2803 阅读 · 0 评论 -
wget命令详解
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合。wget的使用格式 Usage: wget [OPTION]… [URL]…用wget做站点镜像: wget -r -p -np -k http://dsec.pku.edu.cn转载 2016-02-01 18:18:59 · 7499 阅读 · 0 评论 -
linux screen 命令详解
功能说明: 使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的 session.screen命令可以解决这个问题。Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端 的应用。语法:screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r转载 2016-02-01 15:35:49 · 1010 阅读 · 0 评论 -
如何查看Linux版本信息?
这里所谓的Linux版本信息,包括Linux内核版本信息和Linux系统版本信息。下面分别介绍 >>>(笔者在Ubuntu12.04中进行操作并截图如下)一、查看Linux内核版本信息方法1:登陆Linux,在终端输入 cat /proc/version方法2:登陆Linux,在终端输入 uname -a方法3:登陆Linux,在终端输入 uname原创 2015-03-17 21:34:38 · 118922 阅读 · 0 评论 -
虚拟内存
在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64MB。但在应用程序员眼中,并不过度关心插在主板上的内存容量,而是他们可以使用的内存空间——他们可以开发一个需要占用1GB内存的程序,并让其在OS平台上运行,哪怕这台运行主机上只有128MB的物理内存条。而对于OS开发者而言,则是介于二者之间,他们既需要知道物理内存的细节,也需要提供一套机制,为应用程序转载 2013-12-08 11:20:20 · 1111 阅读 · 0 评论 -
配置Ubuntu的tftp服务
tftp(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,它提供不复杂、开销不大的文件传输服务,端口号为69。 我们在做ARM-Linux嵌入式开发中,经常需要用到tftp在Linux服务端和开发板间进行进行文件传输,因为我所使用的是Ubuntu,所以下面主要介绍Ubuntu下如何启动、原创 2016-05-02 21:40:58 · 3567 阅读 · 0 评论 -
Linux 中常用的 echo 命令实例
echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串。echo命令的语法是:echo [选项] [字符串]1、输入一行文本并显示在标准输出上$ echo Tecmintis a community of LinuxNerds会输出下面的文本:Tecmintis a community of Li原创 2016-05-23 00:00:31 · 11297 阅读 · 0 评论 -
dpkg、rpm 和 apt-get、yum 的区别及使用
一般来说著名的 Linux 系统基本上分两大类:RedHat 系列:Redhat、Centos、Fedora 等Debian 系列:Debian、Ubuntu 等Dpkg (Debian系):Ubuntu RPM (Red Hat系):CentOS、Fedora RedHat 系列常见的安装包格式 rpm 包,安装rpm包的命令是“rpm -参数”包管理工具 yum支持 tar 包原创 2016-07-22 14:21:14 · 19372 阅读 · 1 评论 -
正确理解Linux的“多用户、多任务、多线程”
Linux 系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保证用户之间互不干扰。就像手机开了助手一样,同时登陆多个 qq 账号,当硬件配置非常高时,每个用户还可以同时执行多个任务,多个线程同时工作,提高效率。多用户是 Linux 优于其他操作系统的一大特点。原创 2016-11-06 11:11:01 · 9948 阅读 · 0 评论 -
ldconfig 命令用法
ldconfig 是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令——ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib 和 /usr/lib)以及动态库配置文件(/etc/ld.so.conf)内所列的目录下,搜索出可共享的动态链接库(lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /e原创 2016-10-14 11:06:24 · 3038 阅读 · 1 评论 -
Linux Top 命令解析
http://www.jb51.net/LINUXjishu/34604.htmlTOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可转载 2016-09-06 12:04:32 · 593 阅读 · 0 评论 -
浅谈Linux用户态和内核态
为什么要分用户态和内核态? 在 CPU 的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。如果所有的程序都能使用这些指令,那么你的系统一天死机 n 回就不足为奇了。所以,CPU 将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。Intel 的 CPU 将特权级别分为4个级别:原创 2016-09-14 12:03:11 · 1702 阅读 · 0 评论