Linux下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password

本文详细介绍Linux系统中du、df、top、free、pstack、su、sudo、adduser、password等命令的使用方法及参数,帮助用户有效监控和管理系统资源。

1.du命令:[选项]文件    

功能:该命令是显示指定文件以及下的所有文件占用系统数据块的情况,如果没有文件,默认是当前目录      

-a   显示所有文件对系统数据块的使用情况       

-b   显示数据块大小时以字节为基本单位       

-c   除了显示文件对系统数据块的使用情况外还显示出文件的总和       

-s   只显示文件数据块总大小,不显示文件名       

-x   只显示当前目录,但不统计子目录

 

2.df命令:[选项]文件名        

功能:该命令与du命令相似,只不过df计算的是当前文件所有数据块的使用情况(包括前不久删除的文件),而du只是计算当前存在的所有文件的数据块的使用情况      

-a  递归显示各文件及其子目录的数据块利用      

-h  方便阅读时显示      

-H  和-h一样,只不过1k=1000;而不是1024      

-i   显示inode信息      

-k  区块为1024字节      

-T  文件系统类型

 

3.top命令   

top是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,默认5秒刷新一下进程列表,所以类似于 Windows 的任务管理器。    

命令格式  top [-] [d] [p] [q] [c] [C] [S] [s] [n] 

第一行是任务队列信息,同uptime命令的执行结果。

08:57:17 当前时间

up 1:57, 系统运行时间,格式为时:分

2 users 当前登录用户数

load average : 0.00,0.00,0.00  系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。

 

二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。

Tasks : 92 total 进程总数

1 running 正在运行进程数

91 sleeping 睡眠进程数

0 stopped 停止进程数

0 zombie 僵尸进程数

Cpu(s) : 0.0% us 用户空间占用CPU百分比

0.3% sy 内核空间占用CPU百分比

0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

99.3% id 空闲CPU百分比

0.0% wa 等待输入输出的CPU时间百分比

0.0% hi

0.0% si

最后两行为内存信息。

Mem : 1938816k total , 171752k used ,1767064k free , 19384k buffers

Swap : 2097144k total , 0k used , 2097144k free , 79360k cached

Mem : 1938816 k total 物理内存总量

171752k used 使用的物理内存总量

1767064 k free 空闲内存总量

19384 k buffers 用作内核缓存的内存量

Swap : 2097144k total 交换分区总量

0 k used 使用的交换区总量

2097144k free 空闲交换区总量

79360 k cached 缓冲的交换区总量。

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

序号列名含义

PID 进程id

PPID 父进程id

RUSER Realusername UID 进程所有者的用户id

USER 进程所有者的用户名

GROUP 进程所有者的组名

TTY 启动进程的终端名。不是从终端启动的进程则显示为?

PR 优先级

NInice 值。负值表示高优先级,正值表示低优先级

P 最后使用的CPU,仅在多CPU环境下有意义

%CPU 上次更新到现在的CPU时间占用百分比

TIME 进程使用的CPU时间总计,单位秒

TIME+ 进程使用的CPU时间总计,单位1/100秒

%MEM 进程使用的物理内存百分比

VIRT 进程使用的虚拟内存总量,单位kb。

VIRT=SWAP+RES SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。

RES 进程使用的、未被换出的物理内存大小,单位kb。

RES=CODE+DATA CODE 可执行代码占用的物理内存大小,单位kb

DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

SHR 共享内存大小,单位kb

nFLT 页面错误次数

nDRT 最后一次写入到现在,被修改过的页面数。

S 进程状态。

D= 不可中断的睡眠状态

R= 运行

S= 睡眠

T= 跟踪/停止

Z= 僵尸进程

COMMAND 命令名/命令行

WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名

Flags 任务标志,参考sched.h

 

 

4.free命令

命令格式 free [-bkmotV][-s <间隔秒数>]

命令功能: free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

命令参数: -b  以Byte为单位显示内存使用情况。

-k  以KB为单位显示内存使用情况。

-m  以MB为单位显示内存使用情况。

-o  不显示缓冲区调节列。

-s<间隔秒数>  持续观察内存使用状况。

-t  显示内存总和列。

-V  显示版本信息。

 

5.pstack命令

pstack命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。

 

 

6.su命令  用于切换用户

 

 

7.sudo命令   

sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务

sudo的常用参数

sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。

sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。

sudo -k:清除“入场卷”上的时间,下次再使用sudo时要再输入密码。

sudo -b 命令:在后台执行指定的命令。

sudo -p 提示语:可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。

sudo -e 文件名:不是执行命令,而是修改文件,相当于命令sudoedit。

 

 

 

8.adduser命令

adduser可用来建立用户帐号

命令格式

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]

命令参数

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 

-d<登入目录>  指定用户登入时的启始目录。

-D  变更预设值.

-e<有效期限>  指定帐号的有效期限。

-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。

-g<群组>  指定用户所属的群组。

-G<群组>  指定用户所属的附加群组。

-m  自动建立用户的登入目录。

-M  不要自动建立用户的登入目录。

-n  取消建立以用户名称为名的群组.

-r  建立系统帐号。

-s   指定用户登入后所使用的shell。

-u  指定用户ID。

 

 

9.password命令  

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。

命令格式: passwd[选项][参数]

选项

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

参数

用户名:需要设置密码的用户名。

【论文复现】一种基于价格弹性矩阵的居民峰谷分时电价激励策略【需求响应】(Matlab代码实现)内容概要:本文介绍了一种基于价格弹性矩阵的居民峰谷分时电价激励策略,旨在通过需求响应机制优化电力系统的负荷分布。该研究利用Matlab进行代码实现,构建了居民用电行为与电价变动之间的价格弹性模型,通过分析不同时间段电价调整对用户用电习惯的影响,设计合理的峰谷电价方案,引导用户错峰用电,从而实现电网负荷的削峰填谷,提升电力系统运行效率与稳定性。文中详细阐述了价格弹性矩阵的构建方法、优化目标函数的设计以及求解算法的实现过程,并通过仿真验证了所提策略的有效性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事需求响应、电价机制研究或智能电网优化等相关领域的科研人员及研究生。; 使用场景及目标:①研究居民用电行为对电价变化的响应特性;②设计并仿真基于价格弹性矩阵的峰谷分时电价激励策略;③实现需求响应下的电力负荷优化调度;④为电力公司制定科学合理的电价政策提供理论支持和技术工具。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解价格弹性建模与优化求解过程,同时可参考文中方法拓展至其他需求响应场景,如工业用户、商业楼宇等,进一步提升研究的广度与深度。
针对TC275微控制器平台,基于AUTOSAR标准的引导加载程序实现方案 本方案详细阐述了一种专为英飞凌TC275系列微控制器设计的引导加载系统。该系统严格遵循汽车开放系统架构(AUTOSAR)规范进行开发,旨在实现可靠的应用程序刷写与启动管理功能。 核心设计严格遵循AUTOSAR分层软件架构。基础软件模块(BSW)的配置与管理完全符合标准要求,确保了与不同AUTOSAR兼容工具链及软件组件的无缝集成。引导加载程序本身作为独立的软件实体,实现了与上层应用软件的完全解耦,其功能涵盖启动阶段的硬件初始化、完整性校验、程序跳转逻辑以及通过指定通信接口(如CAN或以太网)接收和验证新软件数据包。 在具体实现层面,工程代码重点处理了TC275芯片特有的多核架构与内存映射机制。代码包含了对所有必要外设驱动(如Flash存储器驱动、通信控制器驱动)的初始化与抽象层封装,并设计了严谨的故障安全机制与回滚策略,以确保在软件更新过程中出现意外中断时,系统能够恢复到已知的稳定状态。整个引导流程的设计充分考虑了时序确定性、资源占用优化以及功能安全相关需求,为汽车电子控制单元的固件维护与升级提供了符合行业标准的底层支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
<think>我们正在解决在Ubuntu系统中安装pstack程序的问题。用户尝试使用`sudo apt install pstack`但发现该程序未安装。 在Ubuntu中,`pstack`命令实际上是由`gdb`包提供的,并不是一个独立的包。因此,我们需要安装`gdb`(GNU调试器)来获取`pstack`。 另外,在某些系统中,`pstack`是一个脚本,它调用`gdb`来打印进程的堆栈跟踪。因此,安装`gdb`后,`pstack`应该就可以使用了。 步骤: 1. 更新软件包列表(可选,但推荐以确保获取最新的包信息)。 2. 安装`gdb`。 注意:在安装`gdb`后,`pstack`命令应该就可以在终端中使用了。 但是,需要注意的是,在某些Ubuntu版本中,`pstack`可能被包含在另一个包中(比如`pstack`包),但通常它是由`gdb`提供的。我们可以尝试先安装`gdb`,然后检查`pstack`是否可用。如果不可用,再考虑其他方案。 然而,根据我们的知识,在Ubuntu中,`pstack`命令实际上是一个指向`gdb`的符号链接,或者是一个脚本,它作为`gdb`的一部分被安装。因此,安装`gdb`后,`pstack`应该就存在了。 但为了确保准确性,我们可以先检查`gdb`包是否提供了`pstack`: 我们可以使用`apt-file`工具来查找哪个包提供了`pstack`命令(如果用户没有安装`apt-file`,需要先安装并更新)。 不过,为了简化,我们通常直接安装`gdb`,因为这是最常见的做法。 如果用户安装`gdb`后仍然没有`pstack`,那么我们可以手动创建`pstack`脚本。因为实际上,`pstack`是一个简单的shell脚本,它使用`gdb`来打印堆栈。 因此,我们的回答将包含两个部分: 第一部分:安装`gdb`,并验证`pstack`是否可用。 第二部分:如果仍然没有`pstack`,则手动创建脚本。 但是,根据经验,在最新的Ubuntu版本中(如20.04及以上),安装`gdb`后,`pstack`通常会被自动安装。在较早的版本中,可能需要手动创建。 我们首先尝试安装`gdb`。 另外,用户可能会遇到权限问题,所以使用`sudo`运行安装命令。 具体步骤: 1. 更新包列表(可选): ```bash sudo apt update ``` 2. 安装gdb: ```bash sudo apt install gdb ``` 3. 安装后,检查`pstack`命令是否存在: ```bash which pstack ``` 或者尝试运行: ```bash pstack --help ``` 如果上述步骤后仍然没有`pstack`,那么我们可以手动创建`pstack`脚本。 手动创建`pstack`脚本的方法: 创建文件`/usr/bin/pstack`,内容如下: ```bash #!/bin/sh if test $# -ne 1; then echo "Usage: `basename $0 .sh` <process-id>" 1>&2 exit 1 fi if test ! -r /proc/$1; then echo "Process $1 not found." 1>&2 exit 1 fi # GDB doesn't allow "thread apply all bt" when the process isn't # threaded; need to peek at the process to determine if that or the # simpler "bt" should be used. backtrace="bt" if test -d /proc/$1/task ; then # Newer kernel; has a task/ directory. if test `ls /proc/$1/task | wc -l` -gt 1 2>/dev/null ; then backtrace="thread apply all bt" fi elif test -f /proc/$1/maps ; then # Older kernel; go by it loading libpthread. if grep -e libpthread /proc/$1/maps > /dev/null 2>&1 ; then backtrace="thread apply all bt" fi fi GDB=${GDB:-gdb} # Run GDB, strip out unwanted noise. $GDB --quiet -nx /proc/$1/exe $1 <<EOF 2>&1 | set width 0 set height 0 set pagination no $backtrace EOF /bin/sed -n \ -e 's/^\((gdb) \)*//' \ -e '/^#/p' \ -e '/^Thread/p' ``` 然后,给该脚本可执行权限: ```bash sudo chmod +x /usr/bin/pstack ``` 这样,就可以使用`pstack`命令了。 但是,在最新的Ubuntu版本中,通常安装`gdb`后就会包含`pstack`,所以先尝试第一部分。 此外,我们也可以尝试安装`pstack`包(如果存在的话),但根据我们的了解,在标准的Ubuntu仓库中并没有一个单独的叫做`pstack`的包。所以,我们主要依靠安装`gdb`。 因此,给用户的回答: 在Ubuntu系统中,`pstack`命令通常作为`gdb`(GNU调试器)的一部分提供。请按照以下步骤安装: 1. 打开终端。 2. 更新软件包列表(推荐): ```bash sudo apt update ``` 3. 安装`gdb`: ```bash sudo apt install gdb ``` 4. 安装完成后,尝试运行`pstack`命令,例如查看一个进程的堆栈(需要指定进程ID)。 如果安装`gdb`后仍然没有`pstack`命令,可能是由于在您的Ubuntu版本中该脚本没有被包含或者被移除了。此时,您可以手动创建`pstack`脚本: - 使用文本编辑器(如`nano`)创建文件`/usr/bin/pstack`: ```bash sudo nano /usr/bin/pstack ``` - 将上述脚本内容粘贴进去。 - 保存并退出(在nano中,按Ctrl+O,然后回车,再按Ctrl+X)。 - 赋予执行权限: ```bash sudo chmod +x /usr/bin/pstack ``` 这样,您就可以使用`pstack`命令了。 注意:使用`pstack`需要附加到正在运行的进程,因此需要有足够的权限(通常需要使用`sudo`)。 示例:查看进程ID为1234的进程的堆栈: ```bash sudo pstack 1234 ``` 希望以上步骤能够帮助您解决问题。 相关问题: 1. `pstack`和`gdb`有什么关系? 2. 除了`pstack`,还有哪些工具可以查看进程堆栈? 3. 如何在没有安装`gdb`的情况下使用`pstack`? 4. 在Ubuntu中如何调试权限问题? </think>### 解决 Ubuntu 系统 "The program 'pstack' is currently not installed" 问题 在 Ubuntu 系统中,`pstack` 命令通常包含在 `gdb`(GNU 调试器)包中,而不是作为一个独立的包存在[^1]。以下是完整解决方案: #### 方法 1:安装 gdb(推荐) ```bash # 更新软件包列表 sudo apt update # 安装包含 pstack 的 gdb 包 sudo apt install gdb -y # 验证安装(显示 gdb 版本表示成功) gdb --version ``` 安装后即可正常使用 `pstack` 命令: ```bash # 查看 PID 1234 的进程堆栈 sudo pstack 1234 ``` #### 方法 2:手动创建 pstack 脚本(备用) 如果安装 gdb 后仍找不到 `pstack`,可手动创建脚本: ```bash # 创建 pstack 脚本 sudo nano /usr/bin/pstack ``` 粘贴以下内容: ```bash #!/bin/sh if test $# -ne 1; then echo "Usage: `basename $0 .sh` <process-id>" 1>&2 exit 1 fi gdb -q -nx -ex 'set height 0' -ex 'thread apply all bt' -batch -p $1 ``` 保存后赋予执行权限: ```bash sudo chmod +x /usr/bin/pstack ``` #### 验证命令 ```bash # 查找包含 pstack 的包 apt-file search /usr/bin/pstack # 检查命令路径 which pstack ``` #### 使用示例 ```bash # 查找进程 ID ps aux | grep [process_name] # 查看进程堆栈 sudo pstack [PID] ``` > **注意事项**: > 1. `pstack` 需要 root 权限访问进程内存空间 > 2. 某些 Ubuntu 衍生版(如 Kali Linux)可能将其包含在 `pstack` 包中(可尝试 `sudo apt install pstack`) > 3. 对于容器环境,需在容器内安装 gdb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值