Compare commits
No commits in common. "master" and "v0.9.23" have entirely different histories.
|
@ -27,12 +27,11 @@ assignees: aristocratos
|
|||
- Bashtop version:
|
||||
- (Linux) Linux distribution and version:
|
||||
- (Linux) Data collection type (/proc or psutil):
|
||||
- Psutil version: `python3 -c "import psutil; print(psutil.version_info)"` (version 5.7.0 or above is required):
|
||||
- (OSX/FreeBSD) Os release version:
|
||||
- Terminal used:
|
||||
- Font used:
|
||||
- Bash version, `bash --version` (version 4.4 or above is required):
|
||||
- Locales: output of `locale -v`
|
||||
- Bash version, "bash --version" (version 4.4 or above is required):
|
||||
- Locales: output of "locale -v"
|
||||
|
||||
**Additional context**
|
||||
|
||||
|
|
|
@ -1,14 +1,5 @@
|
|||
# Changelog
|
||||
|
||||
## v0.9.25
|
||||
|
||||
* Fixed: Crash when using "/proc" data collection and filesystem type is 9p, by @bolapara
|
||||
|
||||
## v0.9.24
|
||||
|
||||
* Fixed: Psutil script crash on OSX
|
||||
* Fixed: Error handling for malformed osx-cpu-temp output
|
||||
|
||||
## v0.9.23
|
||||
|
||||
* Fixed: kill/terminate/interrupt process not working in OsX and FreeBSD
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
* Is it a requested change or feature?
|
||||
* If not, open a feature request to get feedback before making a pull request.
|
||||
|
||||
* If it's a fix for a unreported bug, make a bug report and link the pull request.
|
||||
|
||||
* Split up multiple unrelated changes in multiple pull requests.
|
||||
|
||||
* [Shellcheck](https://github.com/koalaman/shellcheck) your work. Current shellsheck exceptions at the beginning of [bashtop](bashtop).
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
echo -e "[\033[1;33m removing packet from the system \033[0m]"
|
||||
echo -e "[\033[1;33m removing packet from the system \033[0m]"
|
||||
|
|
BIN
Imgs/bpytop.png
BIN
Imgs/bpytop.png
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
45
README.md
45
README.md
|
@ -12,24 +12,13 @@
|
|||
[](https://github.com/sponsors/aristocratos)
|
||||
[](https://ko-fi.com/aristocratos)
|
||||
|
||||
### C++ Version
|
||||
|
||||
##### 18 September 2021
|
||||
|
||||

|
||||
|
||||
The C++ version of bashtop - btop++ is available.
|
||||
|
||||
Get it at https://github.com/aristocratos/btop
|
||||
|
||||
#
|
||||
|
||||
## Index
|
||||
|
||||
* [Documents](#documents)
|
||||
* [Description](#description)
|
||||
* [Features](#features)
|
||||
* [Themes](#themes)
|
||||
* [Upcoming](#upcoming) (Python port)
|
||||
* [Support and funding](#support-and-funding)
|
||||
* [Prerequisites](#prerequisites)
|
||||
* [Dependencies](#dependencies)
|
||||
|
@ -39,7 +28,6 @@ Get it at https://github.com/aristocratos/btop
|
|||
* [TODO](#todo)
|
||||
* [License](#license)
|
||||
|
||||
|
||||
## Documents
|
||||
|
||||
#### [CHANGELOG.md](CHANGELOG.md)
|
||||
|
@ -77,6 +65,13 @@ User created themes should be placed in `$HOME/.config/bashtop/user_themes` to b
|
|||
|
||||
Let me know if you want to contribute with new themes.
|
||||
|
||||
## Upcoming
|
||||
|
||||
#### Python port: bpytop
|
||||
|
||||
Currently working full time on this during my vacation :)
|
||||
I'm aiming to have a first release by end of July.
|
||||
|
||||
## Support and funding
|
||||
|
||||
Bug fixes and updates might be slow during normal workdays since I work full time as an industrial worker and don't have much time or energy left during the week.
|
||||
|
@ -208,7 +203,9 @@ brew install osx-cpu-temp
|
|||
>Install with pkg and pip
|
||||
|
||||
``` bash
|
||||
sudo pkg install coreutils gsed git py37-psutil
|
||||
sudo pkg install coreutils gsed python3 git
|
||||
sudo python3 -m ensurepip
|
||||
sudo pip3 install psutil
|
||||
```
|
||||
|
||||
#### Manual installation Linux, OSX and FreeBSD
|
||||
|
@ -227,16 +224,6 @@ sudo make install
|
|||
sudo make uninstall
|
||||
```
|
||||
|
||||
#### FreeBSD package
|
||||
|
||||
Available in [FreeBSD ports](https://www.freshports.org/sysutils/bashtop/)
|
||||
|
||||
Install pre-built pacakge
|
||||
|
||||
``` bash
|
||||
sudo pkg install bashtop
|
||||
```
|
||||
|
||||
#### Arch based
|
||||
|
||||
Available in the AUR as [bashtop-git](https://aur.archlinux.org/packages/bashtop-git/)
|
||||
|
@ -263,16 +250,6 @@ Or use quick installation:
|
|||
sudo ./build --remove
|
||||
```
|
||||
|
||||
#### Guix based
|
||||
|
||||
Available in [official Guix repository](https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/admin.scm) since 6bbd0fd2
|
||||
|
||||
>Installation
|
||||
|
||||
``` bash
|
||||
guix install bashtop
|
||||
```
|
||||
|
||||
#### Ubuntu based
|
||||
|
||||
Available in [official Ubuntu repository](https://launchpad.net/ubuntu/+source/bashtop) since Ubuntu 20.10
|
||||
|
|
21
bashtop
21
bashtop
|
@ -93,7 +93,7 @@ banner=(
|
|||
"██╔══██╗██╔══██║╚════██║██╔══██║ ██║ ██║ ██║██╔═══╝ "
|
||||
"██████╔╝██║ ██║███████║██║ ██║ ██║ ╚██████╔╝██║ "
|
||||
"╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ")
|
||||
declare version="0.9.25"
|
||||
declare version="0.9.23"
|
||||
|
||||
#* Get latest version of BashTOP from https://github.com/aristocratos/bashtop
|
||||
|
||||
|
@ -2129,10 +2129,8 @@ collect_cpu_temps() { #? Collect cpu temperatures
|
|||
#* Get CPU package temp for Rapberry Pi cpus and for OSX
|
||||
elif [[ $sensor_comm != "sensors" && -n ${misc_var} ]]; then
|
||||
cpu[temp_0]="${misc_var#temp=}"
|
||||
cpu[temp_unit]="°${cpu[temp_0]:(-1)}"; cpu[temp_0]=${cpu[temp_0]%%.*}; if [[ ${cpu[temp_0]::1} == "+" ]]; then cpu[temp_0]=${cpu[temp_0]#+}; fi
|
||||
if [[ -z ${cpu[temp_high]} ]]; then
|
||||
cpu[temp_high]="75"; cpu[temp_crit]=$((cpu[temp_high]+10))
|
||||
fi
|
||||
cpu[temp_unit]="°${cpu[temp_0]:(-1)}"; cpu[temp_0]=${cpu[temp_0]%.*}; if [[ ${cpu[temp_0]::1} == "+" ]]; then cpu[temp_0]=${cpu[temp_0]#+}; fi
|
||||
cpu[temp_high]="75"; cpu[temp_crit]=$((cpu[temp_high]+10))
|
||||
|
||||
#* Copy cpu temp to cores
|
||||
for((i=1;i<=threads;i++)); do
|
||||
|
@ -2235,7 +2233,7 @@ collect_mem() { #? Collect memory information from "/proc/meminfo"
|
|||
if ! py_command -a df_array "get_disks(exclude='squashfs'${filtering})"; then psutil_disk_fail=1; psutil_on="false"; fi
|
||||
fi
|
||||
if [[ $psutil_on == false ]]; then
|
||||
readarray -t df_array < <(${df} -x squashfs -x tmpfs -x devtmpfs -x overlay -x 9p 2>/dev/null || true)
|
||||
readarray -t df_array < <(${df} -x squashfs -x tmpfs -x devtmpfs -x overlay 2>/dev/null || true)
|
||||
fi
|
||||
for df_line in "${df_array[@]:1}"; do
|
||||
line_array=(${df_line})
|
||||
|
@ -5064,14 +5062,11 @@ def get_proc(sorting='cpu lazy', tree=False, prog_len=0, arg_len=0, search='', r
|
|||
print(f"{'Pid:':>7} {'Program:':<{prog_len}}", f"{'Arguments:':<{arg_len-4}}" if arg_len else '', f"{'Threads:' if arg_len else ' Tr:'} {'User:':<9}Mem%{'Cpu%':>11}", sep='')
|
||||
|
||||
for p in sorted(psutil.process_iter(['pid', 'name', 'cmdline', 'num_threads', 'username', 'memory_percent', 'cpu_percent', 'cpu_times', 'create_time'], err), key=lambda p: eval(sort_cmd), reverse=reverse):
|
||||
if p.info['name'] == 'idle' or p.info['name'] == err or p.info['pid'] == err:
|
||||
if p.info['name'] == 'idle':
|
||||
continue
|
||||
if p.info['cmdline'] == err:
|
||||
p.info['cmdline'] = ""
|
||||
if p.info['username'] == err:
|
||||
p.info['username'] = "?"
|
||||
if p.info['num_threads'] == err:
|
||||
if p.info['cpu_times'] == err:
|
||||
p.info['num_threads'] = 0
|
||||
p.info['cmdline'] = ''
|
||||
if search:
|
||||
found = False
|
||||
for value in [ p.info['name'], ' '.join(p.info['cmdline']), str(p.info['pid']), p.info['username'] ]:
|
||||
|
@ -5128,8 +5123,6 @@ def proc_tree(width: int, sorting: str = 'cpu lazy', reverse: bool = True, max_l
|
|||
if getinfo and cont:
|
||||
if getinfo['cpu_times'] == err:
|
||||
getinfo['num_threads'] = 0
|
||||
if p.info['username'] == err:
|
||||
p.info['username'] = "?"
|
||||
cpu = getinfo['cpu_percent'] if proc_per_cpu else (getinfo['cpu_percent'] / psutil.cpu_count())
|
||||
print(f"{getinfo['num_threads']:>4} " if getinfo['num_threads'] < 1000 else '999> ',
|
||||
f"{getinfo['username']:<9.9}" if len(getinfo['username']) < 10 else f"{getinfo['username'][:8]:<8}+",
|
||||
|
|
|
@ -226,14 +226,11 @@ def get_proc(sorting='cpu lazy', tree=False, prog_len=0, arg_len=0, search='', r
|
|||
print(f"{'Pid:':>7} {'Program:':<{prog_len}}", f"{'Arguments:':<{arg_len-4}}" if arg_len else '', f"{'Threads:' if arg_len else ' Tr:'} {'User:':<9}Mem%{'Cpu%':>11}", sep='')
|
||||
|
||||
for p in sorted(psutil.process_iter(['pid', 'name', 'cmdline', 'num_threads', 'username', 'memory_percent', 'cpu_percent', 'cpu_times', 'create_time'], err), key=lambda p: eval(sort_cmd), reverse=reverse):
|
||||
if p.info['name'] == 'idle' or p.info['name'] == err or p.info['pid'] == err:
|
||||
if p.info['name'] == 'idle':
|
||||
continue
|
||||
if p.info['cmdline'] == err:
|
||||
p.info['cmdline'] = ""
|
||||
if p.info['username'] == err:
|
||||
p.info['username'] = "?"
|
||||
if p.info['num_threads'] == err:
|
||||
if p.info['cpu_times'] == err:
|
||||
p.info['num_threads'] = 0
|
||||
p.info['cmdline'] = ''
|
||||
if search:
|
||||
found = False
|
||||
for value in [ p.info['name'], ' '.join(p.info['cmdline']), str(p.info['pid']), p.info['username'] ]:
|
||||
|
@ -290,8 +287,6 @@ def proc_tree(width: int, sorting: str = 'cpu lazy', reverse: bool = True, max_l
|
|||
if getinfo and cont:
|
||||
if getinfo['cpu_times'] == err:
|
||||
getinfo['num_threads'] = 0
|
||||
if p.info['username'] == err:
|
||||
p.info['username'] = "?"
|
||||
cpu = getinfo['cpu_percent'] if proc_per_cpu else (getinfo['cpu_percent'] / psutil.cpu_count())
|
||||
print(f"{getinfo['num_threads']:>4} " if getinfo['num_threads'] < 1000 else '999> ',
|
||||
f"{getinfo['username']:<9.9}" if len(getinfo['username']) < 10 else f"{getinfo['username'][:8]:<8}+",
|
||||
|
|
Loading…
Reference in New Issue