diff --git a/composer.json b/composer.json
index c24fe773307c4dca131f6a50bd8bae02ad9b4b39..a5684a92068ac3a43a7945198b62eb1014233d64 100644
--- a/composer.json
+++ b/composer.json
@@ -115,8 +115,8 @@
             "Drupal\\Composer\\Composer::generateMetapackages",
             "Drupal\\Composer\\Composer::generateComponentPackages"
         ],
-        "phpcs": "phpcs --standard=core/phpcs.xml.dist --parallel=$(nproc) --",
-        "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --parallel=$(nproc) --"
+        "phpcs": "phpcs --standard=core/phpcs.xml.dist --parallel=\"$( (nproc || sysctl -n hw.logicalcpu || echo 4) 2>/dev/null)\" --",
+        "phpcbf": "phpcbf --standard=core/phpcs.xml.dist --parallel=\"$( (nproc || sysctl -n hw.logicalcpu || echo 4) 2>/dev/null)\" --"
     },
     "repositories": [
         {
diff --git a/core/misc/cspell/dictionary.txt b/core/misc/cspell/dictionary.txt
index b02f18a8422d68646f54f42d09beb014788272cc..94762370767d82da67347f62401dcc16e8e03898 100644
--- a/core/misc/cspell/dictionary.txt
+++ b/core/misc/cspell/dictionary.txt
@@ -426,6 +426,7 @@ lnumber
 loadjs
 localemark
 localetranslatedirty
+logicalcpu
 lolspeak
 longblob
 longerthan
diff --git a/core/scripts/dev/commit-code-check.sh b/core/scripts/dev/commit-code-check.sh
index c82276083df58dc259e47ef7e6fb026cd8557061..cc3c4bf2824a04969af95eefea48db0c9588bd12 100755
--- a/core/scripts/dev/commit-code-check.sh
+++ b/core/scripts/dev/commit-code-check.sh
@@ -267,7 +267,7 @@
 # Run PHPCS on all files on DrupalCI or when phpcs files are changed.
 if [[ $PHPCS_XML_DIST_FILE_CHANGED == "1" ]] || [[ "$DRUPALCI" == "1" ]]; then
   # Test all files with phpcs rules.
-  vendor/bin/phpcs -ps --parallel=$(nproc) --standard="$TOP_LEVEL/core/phpcs.xml.dist"
+  vendor/bin/phpcs -ps --parallel="$( (nproc || sysctl -n hw.logicalcpu || echo 4) 2>/dev/null)" --standard="$TOP_LEVEL/core/phpcs.xml.dist"
   PHPCS=$?
   if [ "$PHPCS" -ne "0" ]; then
     # If there are failures set the status to a number other than 0.