more content
parent
3ce129234c
commit
e13a43ef15
8 changed files with 315 additions and 0 deletions
17
Bash-Trim-Whitespace.md
Normal file
17
Bash-Trim-Whitespace.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
Trim whitespace in pure bash
|
||||
|
||||
```
|
||||
# turn it on
|
||||
shopt -s extglob
|
||||
output=" This is a test "
|
||||
|
||||
### Trim leading whitespaces ###
|
||||
output="${output##*( )}"
|
||||
|
||||
### trim trailing whitespaces ##
|
||||
output="${output%%*( )}"
|
||||
echo "=${output}="
|
||||
|
||||
# turn it off
|
||||
shopt -u extglob
|
||||
```
|
||||
28
Git-Combine-Repos.md
Normal file
28
Git-Combine-Repos.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
Combine repos in git
|
||||
|
||||
```
|
||||
# Create a new empty repo and clone it ("origin")
|
||||
git clone git@gitlab.com:${myname}/newproject.git
|
||||
cd newproject/
|
||||
|
||||
# Do basic required config if needed
|
||||
git config user.name ${myname}
|
||||
git config user.email ${myemail}
|
||||
|
||||
# Add each remote repo as a subdir (prefix) including commit history
|
||||
git subtree add --prefix=oldproject_1 \
|
||||
git@gitlab.com:${myname}/oldproject_1.git master
|
||||
git subtree add --prefix=oldproject_2 \
|
||||
git@gitlab.com:${myname}/oldproject_2.git master
|
||||
|
||||
# Do any cleanup needed - for example getting rid of a submodule
|
||||
git rm oldproject_1/somegitsubmodule
|
||||
git rm oldproject_1/.gitmodules
|
||||
git commit -m "remove stale submodule" \
|
||||
oldproject_1/.gitmodules \
|
||||
oldproject_1/somegitsubmodule
|
||||
|
||||
# Commit the results back up to your new project
|
||||
git push origin master
|
||||
```
|
||||
|
||||
56
Loopback-FS.md
Normal file
56
Loopback-FS.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
Creating a loopback filsystem and investigating structures
|
||||
|
||||
```
|
||||
dd if=/dev/zero of=msdos.dat bs=4096 count=20480
|
||||
dd if=/dev/zero of=gpt.dat bs=4096 count=20480
|
||||
|
||||
parted ./msdos.dat mktable msdos
|
||||
parted ./gpt.dat mktable gpt
|
||||
hexdump -C ./msdos.dat > msdos_table.hex
|
||||
hexdump -C ./gpt.dat > gpt_table.hex
|
||||
|
||||
parted ./msdos.dat mkpart primary ext3 2048s 100%
|
||||
parted ./gpt.dat mkpart primary ext3 2048s 100%
|
||||
hexdump -C msdos.dat > msdos_part.hex
|
||||
hexdump -C gpt.dat > gpt_part.hex
|
||||
|
||||
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||
sudo pvcreate /dev/loop0p1
|
||||
sudo pvcreate /dev/loop1p1
|
||||
sudo losetup -d /dev/loop0
|
||||
sudo losetup -d /dev/loop1
|
||||
hexdump -C msdos.dat > msdos_pv.hex
|
||||
hexdump -C gpt.dat > gpt_pv.hex
|
||||
|
||||
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||
sudo pvscan --cache
|
||||
sudo vgcreate vgmsdos /dev/loop0p1
|
||||
sudo vgcreate vggpt /dev/loop1p1
|
||||
sudo losetup -d /dev/loop0
|
||||
sudo losetup -d /dev/loop1
|
||||
hexdump -C msdos.dat > msdos_vg.hex
|
||||
hexdump -C gpt.dat > gpt_vg.hex
|
||||
|
||||
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||
sudo pvscan --cache
|
||||
sudo lvcreate -l 100%FREE -n lvmsdos vgmsdos
|
||||
sudo lvcreate -l 100%FREE -n lvgpt vggpt
|
||||
sudo losetup -d /dev/loop0
|
||||
sudo losetup -d /dev/loop1
|
||||
hexdump -C msdos.dat > msdos_lv.hex
|
||||
hexdump -C gpt.dat > gpt_lv.hex
|
||||
|
||||
sudo losetup -P /dev/loop0 ./msdos.dat
|
||||
sudo losetup -P /dev/loop1 ./gpt.dat
|
||||
sudo pvscan --cache
|
||||
sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vgmsdos/lvmsdos
|
||||
sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/vggpt/lvgpt
|
||||
sudo losetup -d /dev/loop0
|
||||
sudo losetup -d /dev/loop1
|
||||
hexdump -C msdos.dat > msdos_ext.hex
|
||||
hexdump -C gpt.dat > gpt_ext.hex
|
||||
```
|
||||
|
||||
12
Mount-OVA.md
Normal file
12
Mount-OVA.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
Mount OVA (VM export file) using vboxmanage
|
||||
|
||||
```
|
||||
# mount OVA to examine contents
|
||||
# - uses vboxmanage (VirtualBox tool) to convert to RAW first
|
||||
|
||||
tar zxf debian_10_pvhvm.ova.gz image.vhd
|
||||
vboxmanage clonemedium disk image.vhd image.raw --format RAW
|
||||
sudo fdisk -l ./image.raw # (look for beginning of first partition, it's at 2048 sector)
|
||||
sudo mount -o offset=$((2048*512)) ./image.raw /mnt
|
||||
```
|
||||
|
||||
163
Server-Notes.md
Normal file
163
Server-Notes.md
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
Random server oriented notes, all over the map
|
||||
|
||||
```
|
||||
Device Mapper:
|
||||
lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3;sub(".*:","dm-",d);print d,n;}'|sort -nk 3
|
||||
dmsetup ls|awk '{n=$1;d=$3;sub(")","",d); printf("dm-%s %s\n",d,n);}'|sort -nk 3
|
||||
|
||||
|
||||
ISO Images with Linux
|
||||
=====================
|
||||
genisoimage -f -J -joliet-long -r -allow-lowercase -allow-multidot \
|
||||
-o foobar.iso path_to_directory_with_files
|
||||
|
||||
|
||||
Notify / inotify
|
||||
================
|
||||
ps $(find /proc/*/fd/* -type l -lname 'anon_inode:inotify' 2>/dev/null \
|
||||
| sed 's+/proc/\([^/]*\)/fd/.*+\1+')
|
||||
echo 1 > /sys/kernel/debug/tracing/events/syscalls/sys_exit_inotify_add_watch/enable
|
||||
cat /sys/kernel/debug/tracing/tracing_on
|
||||
grep -c inotify_add_watch /sys/kernel/debug/tracing/trace
|
||||
echo 0 > /sys/kernel/debug/tracing/events/syscalls/sys_exit_inotify_add_watch/enable
|
||||
|
||||
|
||||
VirtualBox
|
||||
==========
|
||||
$ vboxmanage showmediuminfo disk source.vhdx
|
||||
$ vboxmanage clonemedium disk source.vhdx dest.vdi
|
||||
|
||||
|
||||
LVM cluster volume work
|
||||
=======================
|
||||
https://access.redhat.com/solutions/3618
|
||||
vgchange -cn --config 'global {locking_type=0}' vgsan00
|
||||
|
||||
|
||||
Capture bash history of logged in user
|
||||
======================================
|
||||
PID=1234; gdb -batch --eval "set sysroot /" --eval "attach ${PID}" \
|
||||
--eval "call write_history(\"/tmp/history-${PID}.txt\")" \
|
||||
--eval 'detach' --eval 'q'
|
||||
|
||||
|
||||
Add to glibc
|
||||
============
|
||||
MYGLIBC=$(rpm -q --queryformat='%{version}-%{release}\n' glibc | uniq)
|
||||
yum --showduplicates --disableexcludes=all install nscd-${MYGLIBC}
|
||||
|
||||
|
||||
RHEL Cluster check
|
||||
==================
|
||||
xmllint -relaxng /usr/share/cluster/cluster.rng /etc/cluster/cluster.conf
|
||||
|
||||
|
||||
Tomcat SSL
|
||||
==========
|
||||
http://www.digicert.com/ssl-certificate-installation-tomcat.htm
|
||||
- keyAlias="tomcat" keystoreFile="tomcat.jks" keypass="tomcat"
|
||||
|
||||
# openssl pkcs12 -export -name tomcat -in tomcat.crt -inkey tomcat.key -out tomcat.p12 -CAfile GeoTrust_Inc.cabundle -caname root
|
||||
# keytool -importkeystore -destkeystore tomcat.jks -srckeystore tomcat.p12 -srcstoretype pkcs12 -alias tomcat
|
||||
# keytool -list -v -keystore tomcat.jks
|
||||
|
||||
|
||||
SSL cert checks
|
||||
===============
|
||||
openssl x509 -in XXX.crt -text | grep CN=
|
||||
openssl x509 -modulus -noout -in XXXX.crt | openssl md5
|
||||
openssl rsa -modulus -noout -in XXXX.key | openssl md5
|
||||
|
||||
|
||||
Oracle nifties
|
||||
==============
|
||||
$ lsnrctl status <ID>
|
||||
$ ps -ef|grep pmon |grep -vi grep|grep -vi asm (Oracle ASM)
|
||||
|
||||
$ ps -ef|grep crs (Oracle RAC)
|
||||
$ su - oracle
|
||||
$ sqlplus / as sysdba (it will show RAC is installed)
|
||||
$ select * from gv$active_instances; (verify 100% if there is RAC)
|
||||
|
||||
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmdiskgrps.htm#CHDIBGGH
|
||||
|
||||
|
||||
oracle database size check
|
||||
-------------------------------
|
||||
--- Acutal size of segments i.e. tables/indexes
|
||||
select sum(bytes)/(1024*1024*1024) from dba_segments;
|
||||
select sum(bytes)/(1024*1024*1024) from dba_data_files;
|
||||
-- total size of data files
|
||||
|
||||
crosscheck
|
||||
--------------------------------------
|
||||
Login to “rman target backupadmin/pwd@tns catalog cname/passwd@catalog” once you get “RMAN>” prompt, please run the following:
|
||||
RMAN> Crosscheck ARCHIVELOG ALL;
|
||||
|
||||
oracle query for list of the tablespaces
|
||||
--------------------------------------
|
||||
select tablespace_name, CONTENTS from dba_tablespaces;
|
||||
|
||||
oracle query for list of datafiles
|
||||
--------------------------------------
|
||||
SELECT NAME, FILE#, STATUS, CHECKPOINT_CHANGE# "CHECKPOINT" FROM V$DATAFILE;
|
||||
|
||||
https://docs.oracle.com/cd/B28359_01/server.111/b28310/dfiles010.htm#ADMIN11459
|
||||
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1076.htm#REFRN30050
|
||||
|
||||
ASM disk timeouts
|
||||
|
||||
SQL> select name,value,describe from v$asm_hidden_paras;
|
||||
NAME VALUE DESCRIBE
|
||||
--------------------------------------- -------- ----------------------------------------------------------------------
|
||||
_asm_acd_chunks 1 initial ACD chunks created
|
||||
[...]
|
||||
_asm_global_dump_level 267 System state dump level for ASM asserts
|
||||
_asm_hbeatiowait 15 number of secs to wait for PST Async Hbeat IO return
|
||||
_asm_hbeatwaitquantum 2 quantum used to compute time-to-wait for a PST Hbeat check
|
||||
|
||||
|
||||
SCSI Device Ops
|
||||
===============
|
||||
echo "- - -" > /sys/class/scsi_host/hostX/scan where X is your HBA
|
||||
echo 1 > /sys/block/sdX/device/rescan where X is your device number
|
||||
echo 1 > /sys/block/sdX/device/delete where X is your device number
|
||||
|
||||
|
||||
MySQL Things
|
||||
============
|
||||
MySQL slave check:
|
||||
mysql -e "show slave status\G;" | awk '/Slave_IO_Running|Slave_SQL_Running|Seconds_Behind/'
|
||||
|
||||
MySQL killer for AmReg:
|
||||
for x in `mysqladmin processlist | grep -i select | awk -F"|" ' $7 > 30 { print $2 }'` ; do mysqladmin kill $x ; done
|
||||
|
||||
MySQL real DB size by DB:
|
||||
SELECT table_schema "Name", sum( data_length + index_length ) / 1024 / 1024 / 1024 "Size in GB" FROM information_schema.TABLES GROUP BY table_
|
||||
schema;
|
||||
|
||||
MySQL real DB size by Engine:
|
||||
select engine,count(*),sum(index_length+data_length)/1024/1024 from information_schema.tables group by engine;
|
||||
|
||||
MySQL table size of a single table:
|
||||
SELECT table_name,`engine`,ROUND(data_length/1024/1024,2) total_size_mb,ROUND(index_length/1024/1024,2) total_index_size_mb, table_rows FROM
|
||||
information_schema.TABLES WHERE table_schema = 'threadless' and table_name = 'users';
|
||||
|
||||
MySQL flush buffers for shutdown:
|
||||
# mysql -e "flush logs;"
|
||||
# mysql -e "SET @@global.innodb_max_dirty_pages_pct = 0;"
|
||||
# mysql -e "show global status like ‘Innodb_buffer_pool_pages_dirty’;"
|
||||
## mysqladmin ext -i10 | grep dirty
|
||||
|
||||
MySQL increase connections:
|
||||
gdb -p $(cat /var/run/mysqld/mysqld.pid) -ex "set max_connections=5000" -batch
|
||||
|
||||
Some low disk things
|
||||
|
||||
Low Disk (current directory, w/top 20 on largest directories)
|
||||
FS="$PWD";resize;clear;date;df -h $FS; echo "Largest Directories:"; nice -n19 find $FS -mount -type d -print0 2>/dev/null|xargs -0 du -k 2>/dev/null|sort -runk1|head -n20|awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}';echo "Largest Files:"; nice -n 19 find $FS -mount -type f -print0 2>/dev/null| xargs -0 du -k | sort -rnk1| head -n20 |awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}';
|
||||
|
||||
Low Disk (current directory, takes into account sparse files)
|
||||
FS='./';resize;clear;date;df -h $FS; echo "Largest Directories:"; du -hcx --max-depth=2 $FS 2>/dev/null | grep [0-9]G | sort -grk 1 | head -15 ;echo "Largest Files:"; nice -n 19 find $FS -mount -type f -print0 2>/dev/null| xargs -0 du -k | sort -rnk1| head -n20 |awk -F'\t' '{printf "%8d MB\t%s\n",($1/1024),$NF}'
|
||||
```
|
||||
|
||||
7
Smem-Datamash.md
Normal file
7
Smem-Datamash.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Pull memory stats about a multi-process app and feed to datamash
|
||||
|
||||
```
|
||||
smem -P "[f]iref" -c "uss pss rss" | datamash -H -W --output-delimiter="," sum 1-3
|
||||
smem -P "[c]hrom" -c "uss pss rss" | datamash -H -W --output-delimiter="," sum 1-3
|
||||
```
|
||||
|
||||
25
YTM-to-Textbox.md
Normal file
25
YTM-to-Textbox.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
Google Play -> Youtube Music -> Spotlistr
|
||||
|
||||
```
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# build import list for spotlistr
|
||||
|
||||
## Screen Scrape to file
|
||||
# 1. Open YTM playlist in browser
|
||||
# 2. Scroll down to end, forces "lazy load" to load all tracks
|
||||
# 3. Ctrl-a, Ctrl-c then Ctrl-v to file
|
||||
# 4. Delete first few (~8) lines until it starts with first song
|
||||
# - 4 lines per song (title artist album time)
|
||||
# 5. Save and run through this script, creates <file>.tbox
|
||||
# 6. Paste <file>.tbox into https://www.spotlistr.com/search/textbox
|
||||
|
||||
# the screen-scrape saved filename is the input
|
||||
YTM="$1"
|
||||
|
||||
sed '/:[0-9]\{2\}$/{G;}' "${YTM}" > "${YTM}.tmp"
|
||||
sed -i 's/,/;/' "${YTM}.tmp"
|
||||
sed -E 'H;${x;s/(.)\n/\1,/g}' "${YTM}.tmp" | grep -F ',' > "${YTM}.csv"
|
||||
awk -F, '{OFS=",";print $2 " - " $1}' "${YTM}.csv" > "${YTM}.tbox"
|
||||
```
|
||||
|
||||
|
|
@ -6,11 +6,13 @@
|
|||
|
||||
- [[APT WhatProvides]]
|
||||
- [[Apache wpadmin]]
|
||||
- [[Bash Trim Whitespace]]
|
||||
- [[DB2 Info]]
|
||||
- [[Debian Upgrade]]
|
||||
- [[Dell OpenManage]]
|
||||
- [[Find Examples]]
|
||||
- [[Firefox Tweaks]]
|
||||
- [[Git Combine Repos]]
|
||||
- [[Git Multi SSH]]
|
||||
- [[Git Rewrite User]]
|
||||
- [[Git Server]]
|
||||
|
|
@ -19,7 +21,9 @@
|
|||
- [[IPv4 Default Gateway]]
|
||||
- [[Kernel Boot Debug]]
|
||||
- [[LUKS Encrypted Partitions]]
|
||||
- [[Loopback FS]]
|
||||
- [[MX Blackhole]]
|
||||
- [[Mount OVA]]
|
||||
- [[Mount qcow2]]
|
||||
- [[Netcat Replacements]]
|
||||
- [[Proxmox Doodads]]
|
||||
|
|
@ -28,8 +32,11 @@
|
|||
- [[Recover Deleted ext3]]
|
||||
- [[Roku Info]]
|
||||
- [[Samba OSX]]
|
||||
- [[Server Notes]]
|
||||
- [[Smem Datamash]]
|
||||
- [[Thunderbird LDAP AD]]
|
||||
- [[uBlock Filters]]
|
||||
- [[udev Hide Partitions]]
|
||||
- [[Weechat Quickstart]]
|
||||
- [[YTM to Textbox]]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue