【从零开始的嵌入式生活】LinuxC语言——shell命令(2)

简介: 【从零开始的嵌入式生活】LinuxC语言——shell命令(2)

2.用户管理

2.1相关文件

/etc/passwd文件是用户清单


登陆名

经过加密的口令

UID

默认的GID(组号)

个人信息

主目录

登陆shell

/etc/group UNIX组的名称和每个组中成员列表

每一行代表一个组,包括4个字段:


组名

加密的口令

GID号

成员列表,彼此用逗号隔开

2.2 添加用户 adduser

adduser <username>


/etc/adduser.conf 配置文件


FIRST_UID=1000

LAST_UID=29999

USERS_GID=100

DHOME=/home

DSHELL=/bin/bash

SKEL=/etc/skel

Everything is file.linux下一切皆文件

/etc/adduser.conf 配置文件


2.3 更改用户的属性 usermod

usermod [-u uid [-o]] [-g group] [-G gropup,…]

[-d home [-m]] [-s shell] [-c comment]

[-l new_name] [-f inactive][-e expire]

[-p passwd] [-L|-U] name

举例:用户oldname改名为newname

注意要同时更改家目录: usermod –d /home/newname –m –l newname oldname


2.4 删除用户 deluser

deluser <usrnmae>


使用方法:

最好同时删除用户工作目录:deluser --remove-home user1


2.5 添加用户组 addgroup

addgroup  groupname


2.6 删除用户组 delgroup

delgroup  groupname

3.进程管理

3.1 进程的概念

程序的一次执行就是一个进程


3.2 ps 命令—— 显示进程 (process) 的动态

ps [options]


-A 列出所有的行程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程

进程的状态标志:


D: 不可中断的静止

R: 正在执行中

S: 阻塞状态

T: 暂停执行

Z: 不存在但暂时无法消除 (僵尸态)

<: 高优先级的进程

N: 低优先级的进程

L: 有内存分页分配并锁在内存中

日常使用:


ps aux | grep "name"


一般结合grep来使用。


3.3 top 命令—— 监视进程


3.4 pstree 命令—— 所有行程以树状图显示


3.5 kill 命令——给程序发命令

kill [-signal] PID


kill 命令向指定的进程发出一个信号signal,在默认的情况下,kill 命令向指定进程发出信号15,正常情况下,将杀死那些不捕捉或不忽略这个信号的进程

可以使用kill -l查看所有支持的信号。


3.文件系统的类型和结构

文件系统用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。Linux同样具备完善的文件系统。


Linux文件系统的类型

磁盘文件系统: 指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext3、Ext4、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、FAT、FAT16、FAT32、NTFS等;

网络文件系统: 是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS、Samba等;

专有/虚拟文件系统: 不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)。

目前Ext4是Linux系统广泛使用的一种文件格式。在Ext3基础上,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进。

最大特点是日志文件系统: 可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。。


交换分区(swapping)

将内存中的内容写入硬盘或从硬盘中读出,称为内存交换(swapping)


交换分区最小必须等于计算机的内存 (1.5~2倍 其实内存比较大的话不需要这个)

可以创建多于一个的交换分区

尽量把交换分区放在硬盘驱动器的起始位置

Linux文件系统的结构

文件系统逻辑结构

Linux的文件组织模式犹如一颗倒置的树,这与Windows文件系统有很大差别。


基本目录

绝对路径:/usr/games/gnect

相对目录:./games

默认的相对路径中.代表当前目录..代表上层目录。


相关文章
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
347 18
|
存储 移动开发 网络协议
【实战指南】从零构建嵌入式远程Shell,提升跨地域协作效率(2)
本文《从零构建嵌入式远程Shell》的第二部分,介绍了如何通过模块化设计和功能增强来优化远程Shell,包括支持阻塞命令、增加用户主动结束Shell进程的能力等,提升了跨地域协作效率。文中提供了详细的代码示例和验证步骤,适合开发者深入学习。
249 91
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
919 15
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
790 13
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
588 1
|
人工智能 安全 算法
基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。
本文深入探讨了基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。C语言因其高效、可移植、灵活及成熟度高等特点,在嵌入式系统开发中占据重要地位。文章还介绍了从系统需求分析到部署维护的完整开发流程,以及中断处理、内存管理等关键技术,并展望了嵌入式系统在物联网和人工智能领域的未来发展。
878 1
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
304 5
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
1220 3
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
766 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志