Linux:常见命令du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password的用法

du

1.作用
是磁盘空间使用情况,功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块的情况,如果没有指定目录,则对当前的目录进行统计。
2.重要参数
(1) -a:显示所有文件对系统数据块的使用情况
(2) -b : 显示目录或文件大小时,以byte为单位
(3) -c : 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
(4) -s : 只显示各数据块总大小 ,不显示文件名
(5) -x : 只显示当前目录,不统计子目录

df

1.作用
该命令与du命令相似,只不过df计算的是当前文件所有数据块的使用情况(包括前不久删除的文件),而du只是计算当前存在的所有文件的数据块的使用情况 ,df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
2.重要参数
(1) -a : 递归显示指定目录中各文件及子目录中各文件占用的数据块数。
(2) block-size=<区块大小> : 以指定的区块大小来显示区块数目
(3) -h : 以可读性较高的方式来显示信息
(4)- i : 显示inode的信息
(5)- l : 仅显示本地端的文件系统
(6)- t :仅显示指定文件系统类型的磁盘信息
(7)-k:区块为1024字节

top

1.作用
top命令是Linux系常用的性能分析工具,相当于windows下的资源管理器,可以查看当前cpu的使用情况,各进程的状况。
2.重要参数
(1) -b :批处理。
(2) -c :显示完整的治命令
(3) -i :忽略失效过程
(4)-s :保密模式

free

1.作用
显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统使用的缓冲区等。
2.重要参数
(1) -b :以Byte为单位显示内存使用情况
(2) -k :以KB为单位显示内存使用情况
(3)-m :以MB为单位显示内存使用情况
(4)- o :不显示缓冲区调节列
(5) -s :持续观察内存使用状况
(6)- t :显示内存总和列

pstack命令

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

su

su是切换用户权限的命令,当我们从普通用户切换至超级用户时使用该命令 。

sudo(sudo -, sudo -s)

1.作用
sudo命令用来以其他身份来执行命令,预设的身份为root,用户使用sudo时,必须要先输入密码,然后有五分钟有效期,超过期限必须重新输入密码。
2.重要参数
(1)-b :在后台执行指令
(2)-h :显示帮助
(3)-k :结束密码的有效期限,也就是下次再执行sudo时便需要输入密码
(4)-l : 列出目前用户可执行与无法执行的指令
(5)-p :改变询问密码的提示符号
(6)-s :执行指定的shell
(7)-u :以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份
(8)v :延长密码有效期限5分钟

adduser

1.作用
用于在Linux中创建新的系统用户,useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
2.重要参数
(1)-c :加上备注文字。备注文字会保存在passwd的备注栏位中
(2)-d :指定用户登入时的启始目录
(3)-e :指定帐号的有效期限
(4)-f :指定在密码过期后多少天即关闭该帐号
(5)-g :指定用户所属的群组
(6)-m :自动建立用户的登入目录
(7)-n :取消建立以用户名称为名的群组
(8)-r :建立系统帐号
(9)-s :指定用户登入后所使用的shell
(10)-u:指定用户id

password

1.作用
用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
2.重要参数
(1)-d :删除密码,仅有系统管理者才能使用
(2)-f :强制执行
(3)-k :设置只有在密码过期失效后,方能更新
(4)-l :锁住密码
(5)-s :列出密码的相关信息,仅有系统管理者才能使用
(6)-u :解开已上锁的帐号

<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、付费专栏及课程。

余额充值